Mongotemplate - 根据大于(gt)或小于(lt)运算符查询ObjectId
·
问题:Mongotemplate - 根据大于(gt)或小于(lt)运算符查询ObjectId
当我在控制台中输入它时,它可以工作:
db.posts.find({"_id": {$lt:ObjectId("55732dccf58c555b6d3f1c5a")}}).limit(5).sort({"_id":-1})
当我使用 mongotemplate 时,它不起作用并返回一个空白数组:
@RequestMapping(value="/next", method=RequestMethod.GET)
public List getNextPost(@RequestParam String next) {
Query query = new Query();
query.addCriteria(Criteria.where("_id").lt("55732dccf58c555b6d3f1c5a"));
List<Posts> posts = template.find(query, Posts.class);
return posts;
}
我用这个查询尝试了它,它可以工作,但只返回与 id 相关的特定条目:
query.addCriteria(Criteria.where("_id").is("55732dccf58c555b6d3f1c5a"));
我也尝试了基本查询并做到了这一点,它还返回一个空白数组:
BasicQuery query1 = new BasicQuery("{'_id': {$lt:'ObjectId(\"55732dccf58c555b6d3f1c5a\")'}}).limit(5).sort({'_id':-1}");
我难住了。如何返回数据库中某个 Mongo ObjectID 以下的所有文档?
解答
因此,在搜索了一个小时后,我找到了解决方案 - 我不得不查看这篇不是在 java 中而是在 node.js 中的帖子。
在 node.js 应用中根据 Mongo ID 查询 MongoDB
值得庆幸的是,该语言接近 java,所以我看到您无法通过仅将 objectID 插入 lt 运算符来进行查询。您必须创建一个 objectID 对象并将其插入到运算符中。
ObjectId objID = new ObjectId("55732dccf58c555b6d3f1c5a");
query.addCriteria(Criteria.where("_id").lt(objID));
更多推荐
所有评论(0)