我与猫鼬聚合,我得到的对象看起来像这样:
foods: {
fruits: {
apple: 'NONE',
banana: null,
pearl: 'INCLUDED'
}
}
水果可以有4个值:null,'NONE','INCLUDED','EXTRA'
我的目标是在此聚合中创建$ match / filter,以便能够过滤出null和'NONE'值。
是否可以执行此操作?
就像汇总中的我这样:
{
$match: 'foods.fruits.pearl',
}
然后取回那些珍珠具有'INCLUDED'或'EXTRA'值的物体吗?
答案 0 :(得分:0)
您可以在mongodb 3.4.4 及更高版本
中尝试以下聚合好吧,这里有未知的键,它们的值分别为NONE
和null
,因此,您可以使用$objectToArray
聚合将键转换为值,并可以轻松地$match
使用它们
db.collection.aggregate([
{ "$addFields": {
"data": { "$objectToArray": "$foods.fruits" }
}},
{ "$match": { "data.v": { "$in": [ "NONE", null ] } } },
{ "$project": { "data": 0 }}
])