如何在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"
}