我有一个带有嵌套对象数组的集合,如果嵌套对象数组是否包含项,我想向文档添加一个新的布尔字段。
我可以通过在两个单独的addFields聚合中使用map和in运算符来解决这个问题,但是
我想知道是否有更清洁、更智能的解决方案。
示例文档:
[
{
"_id": "630875a5d0d70edb88e19a7b",
"favorites": [
{
"_id": "6309ef9e538eef79c9e53827",
"user": "6304d72e213e817ee090eb93",
"recipe": "630875a5d0d70edb88e19a7b"
},
{
"_id": "630f1b5a8f00dfa9a7a5006c",
"user": "63066ce10722fdb443efb1f6",
"recipe": "630875a5d0d70edb88e19a7b"
}
]
}
]
我的解决方案是:
db.collection.aggregate([
{
$addFields: {
favoritedUserIds: {
$map: {
input: "$favorites",
as: "favorited",
in: "$$favorited.user"
}
}
}
},
{
$addFields: {
isFavorited: {
$in: [
"6304d72e213e817ee090eb93", // user id
"$favoritedUserIds"
]
}
}
},
{
"$unset": "favoritedUserIds"
}
])
Mongo Playground