mongodb - Mongotemplate - 根据大于(gt)或小于(lt)运算符查询Obje

当我在控制台中输入这个时,它会起作用:

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 中的帖子。

Querying a MongoDB based on Mongo ID in a node.js app

谢天谢地,该语言接近 java,所以我看到您无法通过仅将 objectID 插入 lt 运算符来进行查询。您必须创建一个 objectID 对象并将其插入到运算符中。

      ObjectId objID = new ObjectId("55732dccf58c555b6d3f1c5a");
      query.addCriteria(Criteria.where("_id").lt(objID));

关于mongodb - Mongotemplate - 根据大于(gt)或小于(lt)运算符查询ObjectId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30873713/

相关文章:

java - 在最新的 MongoDB java 驱动程序中使用 createIndex() 时,索

mongodb - Meteor.Collection 和 Meteor.Collection.Cu

c# - 从 2.0 MongoDb c# 驱动程序获取结果

node.js - 我可以使用 MongoDb 驱动程序从 node.js 调用 rs.initia

java - Mongodb选择所有字段按一个字段分组并按另一个字段排序

c# - 如何使用 c# 驱动程序删除 mongodb 文档中的嵌套数组元素

mongodb - NoSQL 与关系数据库与可能的混合

mongodb - 使用聚合框架按子文档字段分组

ruby-on-rails - Mongoid 批量更新/Upsert 替代方案?

node.js - Mongoose - findByIdAndUpdate - 不适用于 req.