如何通过 ObjectID w/MongoDB Shell 查找 mongoDB 对象



如何在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。

在文档中,您可以使用 new 关键字构造ObjectId。例如:

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"
}

最新更新