我有这份文件
[
{
"id" : 1,
"prices" : [
{
"value": 50,
"term": [
{
"term_value" : 6
},
{
"term_value" : 12
}
]
},
{
"value": 100,
"term": [
{
"term_value" : 18
}
]
}
]
},
{
"id" : 2,
"prices" : [
{
"value": 50,
"term": [
{
"term_value" : 6
},
{
"term_value" : 18
}
]
},
{
"value": 150,
"term": [
{
"term_value" : 24
}
]
}
]
}
]
我想使用聚合框架来获取至少具有一个prices.term.value
等于6
的文档
我正在使用这个
Product.aggregate(
[
{ "$match": { "prices.term.value": {"$eq": 6} } },
]
)
它返回所有文档,因为所有文档中至少有一个满足条件,并且没有问题
我需要的是,使用$ filter返回至少具有一个条件的价格
这是我需要的伪代码
{
"$addFields": {
"prices": {
"$filter": {
"input": "$prices",
"as": "field0",
"cond": {
"$eq": [
"$$field0.term.term_value",
6
]
}
}
}
}
}
但是没有任何建议吗?
我需要的结果是
[
{
"id" : 1,
"prices" : [
{
"value": 50,
"term": [
{
"term_value" : 6
},
{
"term_value" : 12
}
]
},
]
},
{
"id" : 2,
"prices" : [
{
"value": 50,
"term": [
{
"term_value" : 6
},
{
"term_value" : 18
}
]
},
]
}
]
谢谢