【问题标题】:Searching by ID in MongoDB not working在 MongoDB 中按 ID 搜索不起作用
【发布时间】:2015-07-16 00:34:40
【问题描述】:

我在 MongoDB 中设置了一些基本搜索,虽然我可以通过“ObjectId”查找记录,但无法通过“_id”进行搜索。我直接在 Mongo 控制台中进行搜索,并在 Atom 中编写搜索代码,然后在 nodemon 服务器中运行。

 db.collection.find( { ObjectId( _id: "abcdefg" ) } ) // Returns a result 
 db.collection.find( { _id: "abcdefg" } )             // Returns null

问题:如果我在控制台输入搜索(1),它会返回一个结果,但是当我在Atom中输入相同的搜索并运行nodemon时,nodemon会抛出错误,因为“ObjectId " 未定义。 (2) 无论我在哪里输入搜索,总是返回 null。

这个问题有什么解决方法吗?谢谢!

【问题讨论】:

    标签: javascript mongodb


    【解决方案1】:

    试试

    db.collection.find({"_id" : ObjectId("abcdefg")})
    

    旁注。在 json 中将密钥放在双引号中是一种更好的做法。让它成为一种习惯。

    【讨论】:

    • “在 json 中将键放在双引号中是一种更好的做法” - 在 JSON 中,对象键周围的双引号是必需的,但是在 JS 中定义对象时 - 它们是完全可选且不必要的(除非您的密钥有空格/其他特殊字符)。
    • 我在想 JS 你的意思是 Json。在JSON 中,对象是{ string: value } 对,因此如果您不使用双引号,则会在内部进行处理。因此,具有讽刺意味的是,您声明中“完全不必要”的部分就像您的评论一样不必要……另一方面,我真的不在乎。做你想做的事。
    • 很抱歉,如果您对我的评论不好,那不是本意。我建议您多阅读一些关于 JSON 的内容,尤其是它的起源和实际定义。虽然最初源自 JavaScript 中使用的对象表示法,但它并不是一回事。我记得我自己对此有点困惑。总结一下差异 - 只要您不序列化 JavaScript 对象 (JSON.stringify),那不是 JSON。只要您远离实际的 JSON - 键周围的引号是完全可选的(同样,除非您的键中有特殊字符)。
    • 感谢您的快速回复!在 Mongo 中是否将键放在引号中是无关紧要的。两种方法我都试过了,很遗憾没有用。
    • 我对Mongo的了解来自Mongo大学,Mongo的创建者免费提供在线讲座。这就是这些信息的来源。你试过上面的那块吗?它是否有效或给出了什么错误?
    猜你喜欢
    • 1970-01-01
    • 2019-02-27
    • 1970-01-01
    • 2019-05-08
    • 2016-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多