【发布时间】:2020-10-16 21:40:54
【问题描述】:
给定以下集合:
db.test.insertOne(
{
test: [
{a: "1", b: "2"},
{a: "3"}
]
}
)
如何在聚合中过滤掉测试数组的第二个文档(带有不存在的字段 b)?
聚合
db.test.aggregate([
{
$project: {
test: {
$filter: {
input: "$test",
cond: {
$ne: ["$$this.b", null]
}
}
}
}
}
])
仍然返回包含不存在字段 b 的子文档:
{
"_id": {"$oid": "xyz"},
"test": [
{
"a": "1",
"b": "2"
},
{
"a": "3"
}
]
}
我希望得到以下结果:
{
"_id": {"$oid": "xyz"},
"test": [
{
"a": "1",
"b": "2"
}
]
}
显然我的管道比这更复杂,但问题归结为这个小例子。
【问题讨论】:
标签: mongodb aggregation-framework