在mongoDB文档中检索空数组或null

时间:2018-03-04 22:10:07

标签: mongodb

我和学校的所有学生都有一个收藏。每个文档都有一个sports数组属性,列出了每个学生的练习,但该属性可能显示为sports: []sports: null,或者根本不显示。

如何检索属于上述三种情况之一的所有文件?

如何将运动添加到只有一项运动但没有表达为阵列的学生,即有sports: "Badminton"的学生?这个属性可以成为一个数组吗?

3 个答案:

答案 0 :(得分:1)

您可以使用$in运算符查询字段值为任何目标值列表的文档:

db.students.find({sports: {$in: [null, []]}})

请注意,null案例也匹配字段不存在的文档。

答案 1 :(得分:0)

我相信您可以为此使用$ elemMatch:

db.students.find({ $not: { $elemMatch: { $exists: true } } })

这告诉mongoDB如果数组存在并且具有值,则失败。它只会返回空或空的值。

答案 2 :(得分:0)

在MongoDB上受支持的(以后)版本上:

find({field:{$not:{$size: 0}}})