Mongodb findOne 不起作用

标签 mongodb

我是第一次使用 Mongodb,我遇到了一个非常奇怪的错误。我有一个“游戏”集合,但我无法使用 _id 查询对其进行搜索。

我直接在 mongo shell 上尝试,结果如下:

> db.games.count()
0
> db.games.insert({created:'ok'})
WriteResult({ "nInserted" : 1 })
> db.games.find()
{ "_id" : ObjectId("54f7364d1f2f9378d7a5ddde"), "created" : "ok" }
> db.games.findOne({_id:'54f7364d1f2f9378d7a5ddde'})
null
> db.games.find({_id:'54f7364d1f2f9378d7a5ddde'})
> 

我真的不知道这是怎么回事?我在想 _id 上的一个奇怪的索引,但我什么也没找到。

> db.games.getIndexes()
[
    {
        "v" : 1,
        "key" : {
            "_id" : 1
        },
        "name" : "_id_",
        "ns" : "cobra.games"
    }
]
> 

这也许能帮到你

> db.version()
2.6.5

有人有想法吗?

最佳答案

尝试:

db.games.find({"_id" : ObjectId("54f7364d1f2f9378d7a5ddde")})

存储在键 _id 中的数据类型是 ObjectId,您正在搜索一个字符串。所以你的类型不匹配。 MongoDB 没有将 String 自动转换为 ObjectId。如果您将数字存储为 Long 但在查询中输入了 Integer,也会发生此错误。

关于Mongodb findOne 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28860198/

相关文章:

python - 使用 PyMongo 在 MongoDB 中进行批量插入/更新

mongodb - 哪种 NoSQL DB 最适合 OLTP 金融系统?

node.js - 如何在 node.js 和 mongoDB native 驱动程序上启用调试?

mongodb - 如何使用mongodb聚合

MongoDB 内存不足

windows - Mongodb Windows 安装失败

python - mongodb 中的 StringField 要求

linux - 在 ubuntu 16.04 上安装 mongodb 时出错

mongodb - 使用 MongoTemplate 创建搜索索引?

node.js - 事务mongodb