收藏:
db.test.find()
{
{ "_id" : ObjectId(...), "arr" : [ "Today", "is", null ] }
{ "_id" : ObjectId(...), "arr" : [ null, null, null ] }
}
我试图找到所有文件arr
等于某个值。在此示例中,我想要包含以下内容的文档arr : [null, null, null]
当给予null
.
查找数组中所有元素都具有特定值的文档 https://stackoverflow.com/questions/26392534/find-documents-where-all-elements-of-an-array-have-a-specific-value
这个解决方案接近我想要的;但是,我的数组数据没有键$elemMatch
以供参考。有没有一种方法可以完成此查询,而无需花费不必要的成本或重组我的数据?
Thanks!
您可以使用$elemMatch
查询运算符。它只需要一个查询。
db.test.find( { arr: { $not: { $elemMatch: { $ne: null } } } } )
"$elemMatch" + "$ne"
这部分包括所有文件arr
数组没有至少一个空值。
这些是至少具有一个非空值的所有文档。
$not
这部分将保留所有不在其中的文件"$elemMatch" + "$ne"
.
这些都是具有以下所有价值的文档null
.
请适应不存在字段的边缘情况,以确保一切按预期工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)