如何在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的存在。
答案 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"
}