如何在 Java mongodb 驱动程序中使用“_id”字段查询文档?

新手上路,请多包涵

我试图通过搜索“_id”键在 MongoDB 中查找文档。我的文件看起来像这样-

 {
  "_id" : ObjectId("4f693d40e4b04cde19f17205"),
  "hostname" : "hostnameGoesHere",
  "OSType" : "OSTypeGoesHere"
}

我正在尝试搜索此文档——

 ObjectId id= new ObjectId("4f693d40e4b04cde19f17205");
BasicDBObject obj = new BasicDBObject();
obj.append("_id", id);
BasicDBObject query = new BasicDBObject();
query.putAll(query);

但我得到以下错误 -

 error: reference to putAll is ambiguous, both method putAll(Map) in BasicBSONObject and method putAll(BSONObject) in BasicBSONObject match
        query.putAll(query);

BasicDBObject 的 append 方法支持 (String Key, Value),如果我将“_id”作为 String 传递给此方法,则不会匹配任何文档。

所以我的问题是如何传递“_id”?

原文由 user837208 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 474
2 个回答

通过使用查询解决它 -

 query.putAll((BSONObject)query);

原文由 user837208 发布,翻译遵循 CC BY-SA 3.0 许可协议

不确定其他人是否正在搜索有关此主题的答案,但这是基于“_id”搜索 MongoDB 记录的最简单方法。 MongoDB 文档未更新,仍将 ObjectId 显示为 com.mongodb 包的一部分(它通常也不会提供有关通过 ObjectId 进行搜索的大量信息)。

 import org.bson.types.ObjectId;

public DBObject findDocumentById(String id) {

    BasicDBObject query = new BasicDBObject();
    query.put("_id", new ObjectId(id));

    DBObject dbObj = collection.findOne(query);
    return dbObj;
}

原文由 Chris 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题