考虑一下我的独立mongodb实例中的db "test“。我创建了一个名为testCol的集合,并插入了一个具有以下语法的文档:
db.testCol.insert({_id:{"age":22,"empId":1},"DOJ":"22JUL"})其结果是:
在请求时
db.testCol.find()我得到了
但是,在插入具有相同_id的另一个文档时,使用语法对数组元素的不同定位:
db.testCol.insert({_id:{"empId":1,"age":22},"DOJ":"22JUL"})其结果是:
在查询集合时,请使用
db.testCol.find()我得到了
{ "_id“:{”年龄“:22,"empId”:1 },“司法部”:“22_id”}
{ "_id“:{ "empId”:1,“年龄”:22 },“司法部”:“22_id”}
这是一个错误吗?因为要使用惟一的_id使用语法查询文档:
db.testCol.find({"_id.age":22,"_id.empId":1})会回来
{ "_id“:{”年龄“:22,"empId”:1 },“司法部”:“22_id”}
{ "_id“:{ "empId”:1,“年龄”:22 },“司法部”:“22_id”}
为什么会发生这种事?如果mongodb遵循特定的_id结构,那么它不应该只从find命令返回一个文档吗?如果mongodb不遵循特定的结构,那么它如何让我插入多个文档?
发布于 2016-08-23 15:50:17
当使用对象作为唯一字段(如MongoDB字段)的值时,我意识到order对_id非常重要。
不确定它是否可以被称为bug。
尽管如此,关于您的查询:
db.testCol.find({"_id.age":22,"_id.empId":1})实际上,您要做的是基于_id字段的各个组件而不是整个_id字段进行查询。
如果您的查询以整个_id为目标,您将得到更好的服务。这个查询应该能实现您想要的结果。
db.testCol.find({"_id": {"age" : 22, "empId" : 1}})https://dba.stackexchange.com/questions/144569
复制相似问题