mongodb查找此文档的原因($ne:null表示数组)
数据:mongodb查找此文档的原因($ne:null表示数组),mongodb,Mongodb,数据: db.inventory.insertMany([ { _id: 1, item: null }, { _id: 2 }, { _id: 3, item: 3 }, { _id: 4 items: [1, 2, 3] }, { _id: 5, items: [] } ]) 问题1: db.inventory.find({ 'item': {$ne: null} }) 结果1: { _id: 3, item:
db.inventory.insertMany([
{ _id: 1, item: null },
{ _id: 2 },
{ _id: 3, item: 3 },
{ _id: 4 items: [1, 2, 3] },
{ _id: 5, items: [] }
])
问题1:
db.inventory.find({ 'item': {$ne: null} })
结果1:
{ _id: 3, item: 3 }
问题2:
db.inventory.find({ 'items.0': {$ne: null} })
结果2:
{ _id: 3, items: [1, 2, 3] },
{ _id: 4, items: [] }
为什么mongoDB会找到这个文档:{u id:4,items:[]}?
这是错误吗?使用
$exists:true
而不是$ne:null
说明:
$ne选择字段值不等于指定值的文档这包括不包含该字段的文档。
null
本身就是mongodb中的数据类型。这就是为什么在项目的0
索引中
它正在搜索null
值,但没有得到它。如果您添加null
like
项:[null]
然后再次运行查询,您将不会看到\u id:4
项
。要满足'item':{$ne:null}
项本身必须存在于对象中。这也是javascript的工作原理。检查一下{'items.0':null}
和{'items.0':{$ne:null}}
,您应该会看到区别但是为什么第一个结果缺少document
{u id:2}
.docs.mongodb.com/manual/tutorial/query-for-null-fields在本例中,查询db.inventory.find({item:null})显示一个没有项的文档。为什么这不适用于阵列?在本例中,查询db.inventory.find({item:null})显示一个没有item的文档。为什么这不适用于阵列?我不知道,你可以继续问。谢谢链接。