1

如何在 MongoDB shell 中执行此操作?

https://stackoverflow.com/a/14315888/8887398

基本上我试图通过它们的 ObjectId 来查找对象。一切都失败了,所以我认为它正在尝试与字符串进行比较。我直接在 MongoDB shell 中执行此操作。这是我尝试过的:

db.myTestDB.find( {_id: 3254ummx213u5k815mn2v2 })
结果:语法错误:标识符在数字文字之后立即开始

db.myTestDB.find( {_id: "3254ummx213u5k815mn2v2" })
结果:没有

db.myTestDB.find( { "_id": "3254ummx213u5k815mn2v2" })
结果:没有

db.myTestDB.find( {_id: ObjectId("3254ummx213u5k815mn2v2") })
结果:没有

我只是在我的示例中放了一个随机 ID,但我已经验证了该 ID 存在,并通过查看 MongoDB Compass。

4

1 回答 1

0

docsObjectId中,您可以使用new关键字构造一个。例如:

db.myTestDB.find( {_id: new ObjectId("3254ummx213u5k815mn2v2") })

因此,您在问题的最后一次尝试中走在了正确的轨道上,您只是错过了new关键字。

这是一个更完整的例子。鉴于以下文档:

db.getCollection('X').find({})

{
    "_id" : ObjectId("59d0ada3c26584cd8b79fc51"),
    "name" : "A"
}
{
    "_id" : ObjectId("59d0adafc26584cd8b79fc54"),
    "name" : "B"
}
{
    "_id" : ObjectId("59d0b2b4c26584cd8b79fd7c"),
    "name" : "C"
}

此 shell 命令将通过 id 加载其中一个文档:

db.getCollection('X').find({_id: new ObjectId("59d0ada3c26584cd8b79fc51")})

{
    "_id" : ObjectId("59d0ada3c26584cd8b79fc51"),
    "name" : "A"
}
于 2019-04-18T10:08:07.460 回答