我真的陷入了这个问题,尝试了所有使用聚合和投影的方法,但还没有成功,请帮我找出一些最佳方法,
这就是我的文档看起来像的样子
{
engagement: {
loves: [ 5e87a316457e874ce886356c,5e87a316457e874ce886356d, 5e87a316457e874ce886356e, 5e87a316457e874ce886356f],
loveCount: 4,
},
_id: 5e87c097c9374e6628a499b
}
现在我想提供一个loves数组的元素,并在此基础上生成以下结果
元件:5e87a316457e874ce886356d
结果
{
engagement: {
loves: [ 5e87a316457e874ce886356d],
loveCount: 4,
},
_id: 5e87c097c9374e6628a499b
}
元件:XYZABC
结果
{
engagement: {
loves: [],
loveCount: 4,
},
_id: 5e87c097c9374e6628a499b
}
您需要$filter:
db.collection.aggregate([
{
$addFields: {
"engagement.loves": {
$filter: {
input: "$engagement.loves",
cond: {
$eq: [ "$$this", "5e87a316457e874ce886356d" ]
}
}
}
}
}
])
Mongo游乐场