【问题标题】:ObjectId in mongoDB 2.6 not workingmongoDB 2.6 中的 ObjectId 不起作用
【发布时间】:2014-11-21 00:25:06
【问题描述】:

我在我的应用程序中使用 spring data mongodb。它使用 mongodb 2.6。我想通过 mongo 在插入过程中分配的 id 查询集合的文档。我正在做这样的事情:

Query query = new Query();
String id = "542385a91f00bf7dbeae1fc7";
query.addCriteria(Criteria.where("_id").new Object(id));
template.find(query, entity.class);

此查询转换为:

{ "_id" : { "$oid" : "542385a91f00bf7dbeae1fc7"}}

当我在 mongo shell 上执行同样的操作时,它会报错:

错误:{ "$err" : "无法规范化查询:BadValue 未知运算符:$oid", “代码”:17287 }

如何使用spring data mongodb按id查询?

【问题讨论】:

  • 你不能在mongo shell中使用{ "_id" : { "$oid" : "542385a91f00bf7dbeae1fc7"}}进行查询,使用{"_id":ObjectId("542385a91f00bf7dbeae1fc7")}
  • 好的。当我执行 SerializationUtils.serializeToJsonSafely(query) 时,这就是它打印的内容。所以如果我必须通过 id 查询,我该怎么做呢?因为 query.addCriteria(Criteria.where("_id").is(new Object(id)));不起作用。它给了我 0 个结果。
  • 能否提供文档的插入java代码,或者从mongo shell查询文档的结果?

标签: java mongodb spring-data-mongodb


【解决方案1】:

应该是这样的

new ObjectId(id)

而不是new Object(id)。请see the API docs for details

【讨论】:

    猜你喜欢
    • 2016-07-24
    • 2014-11-12
    • 1970-01-01
    • 2018-09-03
    • 1970-01-01
    • 2021-03-10
    • 1970-01-01
    • 2020-06-02
    • 2015-07-19
    相关资源
    最近更新 更多