我需要帮助在MongoDB中建立聚合管道。
我使用的MongoDB版本是4。
存储在数据库中的文档如下:
[{
_id : "xxxxxx",
names : [
{ "lang" : "EN", value : "foo" },
{ "lang" : "IT", value : "bar" },
{ "lang" : "NOLANG", value : "baz" }
],
some : "value"
},{
_id : "yyyyyy",
names : [
{ "lang" : "FR", value : "quux" },
{ "lang" : "IT", value : "quuux" },
{ "lang" : "NOLANG", value : "quuuux" }
],
some : "value"
}]
我需要添加一个包含特定语言值的聚合字段(在本例中,我将采用“en”),如果找不到具有请求语言的元素,我需要获取“nolang”对象值。
因此,聚合的结果必须如下所示:
[{
_id : "xxxxxx",
name : "foo",
some : "value"
},{
_id : "yyyyyy",
name : "quuuux",
some : "value"
}]
这是我写的管道:
[
{
$project : {
names : 0,
name: {
$filter: {
input: '$names',
as: 'name',
cond: {
$switch: {
$branches: [
{
case : {
$eq : ["$$name.lang", "EN"]
},
then : "$$name.value"
} ,{
case : {
$eq : ["$$name.lang", "NOLANG"]
},
then : "$$name.value"
}
],
default : ''
}
}
}
}
}
}
]
它给出了错误:预期为“[”或AggregationStage,但找到了“”。
我做错什么了?有人能帮我吗?
谢谢