gpt4 book ai didi

Java -- MongoDB collection.find() by _id

转载 作者:可可西里 更新时间:2023-11-01 09:11:20 25 4
gpt4 key购买 nike

我试图通过使用他的唯一 _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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com