使用汇总时,如何从mongo集合中筛选出没有子字段的文档?
该集合如下所示:
{
"_id": ObjectId("adasdasd"),
"obj": { "a": 1 }
},
{
"_id": ObjectId("ergergerg"),
"obj": { "b": 2 }
},
{
"_id": ObjectId("adasdasd"),
"obj": { "a": 3, "b": 4 }
},
我将如何使用aggregate()函数仅选择“ obj”字段包含“ b”子字段的文档?结果应如下所示:
{
"_id": ObjectId("ergergerg"),
"obj": { "b": 2 }
},
{
"_id": ObjectId("adasdasd"),
"obj": { "a": 3, "b": 4 }
},
我意识到我可以使用find()和$ exists,但是我正在寻找使用Aggregate()的解决方案。任何帮助是极大的赞赏。
答案 0 :(得分:1)
我的头顶上
$match: {'obj.b': { $exists: true, $ne: null } }
看看$match stage:
过滤文档以仅传递与 指定条件进入下一个管道阶段。
$ match阶段具有以下原型形式:
{$ match:{}}
$ exists语法:{字段:{$ exists:}}
为true时,$ exists匹配包含以下内容的文档: 字段,包括字段值为空的文档。如果 为假,查询仅返回不包含以下内容的文档: 字段。