Fra*_*nck 14 mongodb mongo-java
收藏:progs的
{ "_id" : "ABC", "defaultDirectory" : "abc", "defaultRecvDirectory" : "abc" }
{ "_id" : "RAS", "defaultRecvDirectory" : "recv/ras" }
{ "_id" : "SND", "defaultSendDirectory" : "send/snd" }
Run Code Online (Sandbox Code Playgroud)
在mongo控制台中:
db.progs.find({"_id":{"$lt":"ZZZZZZZZZ"}}).sort({"_id":-1}).limit(1);
==> { "_id" : "SND", "defaultSendDirectory" : "send/snd" }
Run Code Online (Sandbox Code Playgroud)
在Java中:
BasicDBObject query = new BasicDBObject();
query.put("_id", new BasicDBObject("$lt", "ZZZZZZZZZZ"));
DBCursor cursor = collection.find(query).sort(new BasicDBObject("_id","-1")).limit(1);
for (DBObject dbObject : cursor) {
System.out.println(dbObject);
}
==> { "_id" : "ABC", "defaultSendDirectory" : "abc", "defaultRecvDirectory" : "abc" }
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下这个区别吗?
Joh*_*yHK 29
从"-1"您的排序中删除引号:
DBCursor cursor = collection.find(query).sort(new BasicDBObject("_id",-1)).limit(1);
Run Code Online (Sandbox Code Playgroud)
或者使用Mongodb ASC/DESC常量com.mongodb.operation.OrderBy而不是硬编码1/-1
例:
DBCursor cursor = collection.find(query).sort(new BasicDBObject("_id", OrderBy.DESC.getIntRepresentation())).limit(1);
Run Code Online (Sandbox Code Playgroud)
小智 5
另一个基于MongoTemplate的版本:
public List<?> findLimitedSorted(Query query, Object target, String startFrom) {
query.limit(100);
query.with(new Sort(Sort.Direction.ASC, "<field_name>"));
return getMongoTemplate().find(query, target.getClass());
}
Run Code Online (Sandbox Code Playgroud)