【问题标题】:Can not find a record by it's _id in mongoDB在 mongoDB 中无法通过它的 _id 找到记录
【发布时间】:2022-05-10 15:44:59
【问题描述】:

我想通过它的_id 来获取记录,如下所示:

db.user.find({_id : ObjectId("53a095aa4568cb1fef93f681")})

如您所见,记录存在:

我认为我的方法是正确的:

那么我的代码有什么问题?我正在使用 RoboMongo。

【问题讨论】:

  • 正如下面回答的那样,您插入文档时没有使用默认的 MongoDB ObjectId 类型,可能是您的代码中的错误或其他问题

标签: mongodb


【解决方案1】:

您的 _id 字段不是 ObjectId 它只是一个字符串。

这应该可行:

db.user.find({_id : "53a095aa4568cb1fef93f681"})

蒙古文档:https://docs.mongodb.com/v3.2/reference/method/ObjectId/

【讨论】:

  • 天啊!我犯了多么愚蠢的错误!浪费我几个小时的时间:|谢谢朋友...
  • 嗯......我花了多少小时处理涉及 mongodb 的愚蠢错误......
  • @Zarathustra,为什么我有带有字符串的文档,有时带有对象,我记得我有一些带有 GUI 的记录,但我不记得了,无论如何我可以在哪里设置,以及什么是最好的选择吗?
  • @stackdave 使用自动生成的 ObjectId。您可以通过查询找到其中 _id 是字符串的文档。您可能会从这个答案中学到一些东西stackoverflow.com/a/30975037/1248724
【解决方案2】:

如果你使用 python,试试这个,

from bson import ObjectId
db.user.find({_id : ObjectId("53a095aa4568cb1fef93f681")})

【讨论】:

    【解决方案3】:

    有时将_id作为str是正确的,有时将_id作为ObjectId是正确的,这取决于你在哪里。

    一个。 NoSQLBooster/Pymongo:

    db.user.find({_id : ObjectId("53a095aa4568cb1fef93f681")})
    

    b. Robo3T/RoboStudio

    db.user.find({_id : "53a095aa4568cb1fef93f681"})
    

    【讨论】:

      猜你喜欢
      • 2011-10-15
      • 2021-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-22
      • 2015-11-08
      • 1970-01-01
      • 2021-08-16
      相关资源
      最近更新 更多