我发现这个问题是针对C#和Perl的,但不是在本机界面中.我认为这会奏效:
db.theColl.find( { _id: ObjectId("4ecbe7f9e8c1c9092c000027") } )
查询未返回任何结果.我通过做db.theColl.find()和抓取ObjectId 找到了4ecbe7f9e8c1c9092c000027 .该集合中有数千个对象.
我已经阅读了我在mongodb.org网站上找到的所有页面,但没有找到它.这只是一件奇怪的事吗?这对我来说似乎很正常.
Tyl*_*ock 372
一点也不奇怪,人们总是这样做.确保集合名称正确(大小写很重要)并且ObjectId是准确的.
文档在这里
> db.test.insert({x: 1})
> db.test.find() // no criteria
{ "_id" : ObjectId("4ecc05e55dd98a436ddcc47c"), "x" : 1 }
> db.test.find({"_id" : ObjectId("4ecc05e55dd98a436ddcc47c")}) // explicit
{ "_id" : ObjectId("4ecc05e55dd98a436ddcc47c"), "x" : 1 }
> db.test.find(ObjectId("4ecc05e55dd98a436ddcc47c")) // shortcut
{ "_id" : ObjectId("4ecc05e55dd98a436ddcc47c"), "x" : 1 }
Run Code Online (Sandbox Code Playgroud)
Mus*_*niz 80
如果您正在使用Node.js:
> var ObjectId = require('mongodb').ObjectId;
> var id = req.params.gonderi_id;
> var o_id = new ObjectId(id);
> db.test.find({_id:o_id})
Run Code Online (Sandbox Code Playgroud)
编辑:更正为新的ObjectId(id),而不是新的ObjectID(id)
MPl*_*ard 79
更容易,尤其是制表完成时:
db.test.find(ObjectId('4ecc05e55dd98a436ddcc47c'))
Run Code Online (Sandbox Code Playgroud)
编辑:也可以使用findOne命令进行更漂亮的输出.
小智 17
您错过了插入双引号.精确查询是
db.theColl.find( { "_id": ObjectId("4ecbe7f9e8c1c9092c000027") } )
Run Code Online (Sandbox Code Playgroud)
小智 9
我认为你最好写这样的东西:
db.getCollection('Blog').find({"_id":ObjectId("58f6724e97990e9de4f17c23")})
Run Code Online (Sandbox Code Playgroud)
如果您正在使用 mongo shell,请参考:来自 Tyler Brock 的回答
如果您使用 node.js 使用 mongodb,我写了答案
您不需要将 id 转换为ObjectId. 只需使用:
db.collection.findById('4ecbe7f9e8c1c9092c000027');
Run Code Online (Sandbox Code Playgroud)
这个集合方法会自动将id转换成ObjectId。
另一方面 :
db.collection.findOne({"_id":'4ecbe7f9e8c1c9092c000027'})没有按预期工作。您已手动将 id 转换为ObjectId.
可以这样做:
let id = '58c85d1b7932a14c7a0a320d';
let o_id = new ObjectId(id); // id as a string is passed
db.collection.findOne({"_id":o_id});
Run Code Online (Sandbox Code Playgroud)
小智 5
打开 mongo CLI 后,即可连接并授权正确的数据库。
\n\n\n\n\n以下示例演示如何从名为 \xe2\x80\x9cproducts\xe2\x80\x9d 的集合中查找 _id=568c28fffc4be30d44d0398e 的文档:
\n
db.products.find({"_id": ObjectId("568c28fffc4be30d44d0398e")})\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
327884 次 |
| 最近记录: |