考虑一个名为“方案”的集合,并使用以下文档。如何查询预付费数组中至少包含元素且包含“a”的所有方案?这里第一个集合满足条件,因为dataArray[0]具有“a”。第二个集合没有。因此,我希望通过查询只查找这样的集合—整个dataArray的一个元素中包含“a”。
{ "plan":{ "dataArray" : [ { "a" : "x", "b" : "y", "c" : "z" }, { "b" : "x", "c" : "z" } ], } } { "plan":{ "dataArray" : [ { "b" : "y", "c" : "z" }, { "b" : "x", "c" : "z" } ], } }
你可以用 $exists 运算符来检查数组中是否存在该属性
$exists
db.collection.find({ "plan.dataArray.a": { $exists: true } })
输出
[ { "plan": { "dataArray": [ { "a": "x", "b": "y", "c": "z" }, { "b": "x", "c": "z" } ] } } ]