gpt4 book ai didi

MongoDB - findOne by _id 在 shell 中返回 null

转载 作者:可可西里 更新时间:2023-11-01 10:16:14 28 4
gpt4 key购买 nike

当我运行一个简单的 findOne 来获取没有过滤器的文档时,我得到了这个:

mongos> db.mycollection.findOne({},{_id:1})
{ "_id" : "1d0eb04fd0325cd79e4f8dc24268c6ad2205082199957ce42ffb9e802eec73c9" }

但是当我将该 _id 作为过滤器返回时,我没有得到任何结果:

mongos> db.mycollection.findOne({ "_id" : "1d0eb04fd0325cd79e4f8dc24268c6ad2205082199957ce42ffb9e802eec73c9" } )
null

这是为什么?当我搜索其他字段时,我可以获得结果,但使用 _id 搜索不会返回任何结果。

值得注意的是,这些文档包含一个嵌套对象,它有自己的 _id。使用此 nested._id 字段搜索也不会返回任何内容。

我的环境:在 Centos 7 上运行的 2 个分片 mongoDB 3.4。每个副本集有 3 个成员,一切看起来都很健康。

最佳答案

检查 MongoDB 并确保您的 _id 字段都是 ObjectId 而不是纯字符串。基本上,当您插入带有自定义 ID 的文档时,请确保将对象传递到“_id”字段。对我来说,以下将起作用......

mongos> db.mycollection.findOne({},{_id:1})
{ "_id" : ObjectId("1d0eb04fd0325cd79e4f8dc24268c6ad2205082199957ce42ffb9e802eec73c9") }

然后通过 _id 找到一个 ...

mongos> db.mycollection.findOne({ "_id" : ObjectId("1d0eb04fd0325cd79e4f8dc24268c6ad2205082199957ce42ffb9e802eec73c9") } )
{ "_id" : ObjectId("1d0eb04fd0325cd79e4f8dc24268c6ad2205082199957ce42ffb9e802eec73c9"), "blahh" : "val"}

关于MongoDB - findOne by _id 在 shell 中返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42566070/

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