與HibernateRepository相似,經過繼承MongoRepository接口,咱們能夠很是方便地實現對一個對象的增刪改查,要使用Repository的功能,先繼承MongoRepository<T, TD>接口,其中T爲倉庫保存的bean類,TD爲該bean的惟一標識的類型,通常爲ObjectId。以後在service中注入該接口就能夠使用,無需實現裏面的方法,spring會根據定義的規則自動生成。
下面是支持的查詢類型,每三條數據分別對應:(方法後綴,方法例子,MongoDB原生查詢語句)java
GreaterThan(大於)
findByAgeGreaterThan(int age)
{"age" : {"$gt" : age}}spring
LessThan(小於)
findByAgeLessThan(int age)
{"age" : {"$lt" : age}}mongodb
Between(在...之間)
findByAgeBetween(int from, int to)
{"age" : {"$gt" : from, "$lt" : to}}lua
IsNotNull, NotNull(是否非空)
findByFirstnameNotNull()
{"age" : {"$ne" : null}}spa
IsNull, Null(是否爲空)
findByFirstnameNull()
{"age" : null}.net
Like(模糊查詢)
findByFirstnameLike(String name)
{"age" : age} ( age as regex)code
(No keyword) findByFirstname(String name)
{"age" : name}對象
Not(不包含)
findByFirstnameNot(String name)
{"age" : {"$ne" : name}}繼承
Near(查詢地理位置相近的)
findByLocationNear(Point point)
{"location" : {"$near" : [x,y]}}接口
Within(在地理位置範圍內的)
findByLocationWithin(Circle circle)
{"location" : {"$within" : {"$center" : [ [x, y], distance]}}}
Within(在地理位置範圍內的)
findByLocationWithin(Box box)
{"location" : {"$within" : {"$box" : [ [x1, y1], x2, y2]}}}
@Query(value="{ 'name':{'$regex':?2,'$options':'i'}, sales':{'$gte':?1,'$lte':?2}}",fields="{ 'name' : 1, 'age' : 1}") public Page<Product> findByNameAndAgeRange(String name,double ageFrom,double ageTo,Pageable page);
查詢發生時間是2016年以後的
> db.station_evaluation.find({"currenttime":{$gt:new Date('2016-12-12 12:12:12')}});
查詢經緯度符合條件的
> db.station_evaluation.find({"currenttime":{$gt:new Date('2016-12-12 12:12:12')},"latitude" : "22.560890570746526"});
查詢知足發生時間以後,而且該字段必定存在的
> db.station_evaluation.find({"currenttime":{$gt:new Date('2016-12-12 12:12:12')},"currenttime" : {$exists:1}});