如何通过带MongoDB Shell的ObjectID查找mongoDB对象?

时间:2019-04-18 03:40:52

标签: mongodb mongodb-shell

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

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

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

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

db.myTestDB.find( {_id: "3254ummx213u5k815mn2v2" }
结果:一无所有

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

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

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

1 个答案:

答案 0 :(得分:0)

the docs中,使用ObjectId关键字构造一个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"
}