我试图通过使用他的唯一 _id 从集合中获取元素,但我找不到方法。
这是我的代码
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase database = mongoClient.getDatabase("DB");
MongoCollection<Document> collection = database.getCollection("COLL");
如果我用
查询我的数据库BasicDBObject query=new BasicDBObject("info.i0","0");
Document myDoc = collection.find(query).first();
System.out.println(myDoc.toJson());
我得到输出
{ "_id" : { "$oid" : "560ea3f205240f065a3e9d19" }, "name" : "MongoDB", "type" : "database", "count" : 1, "info" : { "i0" : "0", "i1" : "1", "i2" : "2", "i3" : "3", "i4" : "4", "i5" : "5", "i6" : "6", "i7" : "7", "i8" : "8", "i9" : "9" } }
但如果我尝试
BasicDBObject query=new BasicDBObject("_id.$oid","560ea3f205240f065a3e9d19");
Document myDoc = collection.find(query).first();
System.out.println(myDoc.toJson());
我得到一个空指针异常,因为 myDoc 是空的。
我做错了什么?
最佳答案
$oid
只存在于 preserve BSON representation .
它只对 MongoDB 内部 JSON 解析器有意义。
您只需在查询中使用 _id
:
BasicDBObject query=new BasicDBObject("_id",new ObjectId("560ea3f205240f065a3e9d19"));
另外,请注意 _id
字段的类型是 ObjectId
而不是 String
。
您必须将其包装在 ObjectId
构造函数中。
关于Java -- MongoDB collection.find() by _id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32915766/