java - 如何使用 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”作为字符串传递给该方法,则不会匹配任何文档。

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

最佳答案

不确定其他人是否可能正在搜索有关此主题的答案,但这是基于“_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;
}

关于java - 如何使用 Java mongodb 驱动程序中的 "_id"字段查询文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9797935/

相关文章:

node.js - 想要弄清楚NodeJS应用程序结构(完整的JavaScript堆栈)

mongodb - 如何使用 Meteor Upsert

node.js - Node.js 上 MongoDB 连接的最佳实践是什么?

mongodb - 如何在 MongoDB 中创建嵌套索引?

mongodb - node.js 的 mongoose 中的十进制/ float

node.js - 当 mongodb 的好处应该是无模式时,为什么 mongoose 使用模式?

python - pymongo 中的快速或批量更新

ruby-on-rails - Mongoid 查找器不起作用?

node.js - 同步连接mongodb

Mongodb - 删除数组字段中所有元素的正确方法?