如何在控制台中通过ObjectIdsearch对象?
我发现这个问题回答了C#和Perl,但不是在本机界面。 我认为这将工作:
db.theColl.find( { _id: ObjectId("4ecbe7f9e8c1c9092c000027") } )
查询返回没有结果。 我通过db.theColl.find()
find了4ecbe7f9e8c1c9092c000027,并抓取了一个ObjectId。 该集合中有几千个对象。
我已经阅读了所有可以在mongodb.org网站上find的页面,但没有find它。 这只是一个奇怪的事情吗? 对我来说这似乎很正常。
一点也不奇怪,人们总是这样做。 确保集合名称正确(大小写很重要)并且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 }
更容易,尤其是选项卡完成:
db.test.find(ObjectId('4ecc05e55dd98a436ddcc47c'))
编辑:也适用于findOne
命令更漂亮的输出。
如果您使用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})
编辑:更正为新的ObjectId(id),不是新的ObjectID(id)
您错过了插入双引号。 精确查询是
db.theColl.find( { "_id": ObjectId("4ecbe7f9e8c1c9092c000027") } )
一旦你打开mongo CLI,连接并授权在正确的数据库。
以下示例显示了如何使用名为“products”的集合中的_id = 568c28fffc4be30d44d0398e来查找文档 :
db.products.find({"_id": ObjectId("568c28fffc4be30d44d0398e")})
我刚刚遇到了这个问题,完全按照logging,它仍然没有工作。
看看你的错误信息,并确保你没有任何复制的特殊字符。我得到的错误
SyntaxError: illegal character @(shell):1:43
当我到达字符43时,这只是我的对象ID的开始,在打开引号之后,就像我粘贴的那样。我把光标放在那里,当退出公开引用时,什么都没有出现。 我再次回退,并删除了公开报价,然后我把报价回来执行查询,它的工作,尽pipe看起来完全一样。
我在WebMatrix中进行开发,并从控制台复制对象ID。 每当从WebMatrix中的控制台复制时,您都可能会拾取一些会导致错误的隐形字符。
要使用Objectid方法,您不需要导入它。 它已经在mongodb对象上了。
var ObjectId = new db.ObjectId('58c85d1b7932a14c7a0a320d'); db.yourCollection.findOne({ _id: ObjectId }, function (err, info) { console.log(info) });
我想你最好写这样的东西:
db.getCollection('Blog').find({"_id":ObjectId("58f6724e97990e9de4f17c23")})
简单地做:
db.getCollection('test').find('4ecbe7f9e8c1c9092c000027');