【发布时间】:2018-06-13 12:23:32
【问题描述】:
我正在尝试将所有对象收集到一个嵌套数组中,其中字段spec 等于unknown。
每个文档的结构类似于:
{
"_id" :"5b1e73786f11e421956023c3",
"subs" : [
{
"name" : "subrepo1",
"files" : [
{
"name" : ".....",
"spec" : "Unknown"
},
{
"name" : ".....",
"spec" : "Unknown"
}
]
},
{
"name" : "subrepo2",
"files" : [
{
"name" : "file2",
"spec" : "Unknown"
},
{
"name" : ".....",
"spec" : "1234"
}
]
}
]
}
我尝试了以下方法,但它不起作用。我认为这是正确的方向,但我可能遗漏了一些重要的东西。
db.col.aggregate([
{$match: {'subs.files.spec': 'Unknown'}},
{$project: {
'subs.files': {$filter: {
input: '$subs.files',
//as: 'subs.files',
cond: {$eq: ['this.spec', 'FunSuite']}
}},
//_id: 0
}}
])
预期的输出将是:(所以只有规格等于未知的文件(而不是其他文件)
{
"_id" : "5b1e73786f11e421956023c3",
"subs" : [
{
"name" : "subrepo1",
"files" : [
{
"name" : ".....",
"spec" : "Unknown"
},
{
"name" : ".....",
"spec" : "Unknown"
}
]
},
{
"name" : "subrepo2",
"files" : [
{
"name" : "file2",
"spec" : "Unknown"
}
]
}
]
}
【问题讨论】:
-
你的预期输出是什么?
-
@MạnhQuyếtNguyễn 添加输出以使其清晰。