1 回答

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊
如果要更改數(shù)組內(nèi)容以根據(jù)條件添加新字段,則需要運(yùn)算符,并且如果您不想限制或更改返回的文檔的其余部分,則$map可能使用:$addFields
$collection->aggregate([
[ '$match' => [
'_id' => new ObjectId($comment_id)
]],
[ '$addFields' => [
'replies' => [
'$map' => [
'input' => '$replies',
'in' => [
'reply_id' => '$$this.reply_id',
'content' => '$$this.content',
'is_approved' => '$$this.is_approved',
'is_liked' => [ '$in' => [ $user_id, '$$this.likes.user_id' ] ],
'like_count' => '$$this.like_count'
]
]
]
]],
... # any other pipeline
])
或者,$mergeObjects如果您的 MongoDB 支持并且您更喜歡,請(qǐng)使用:
$collection->aggregate([
[ '$match' => [
'_id' => new ObjectId($comment_id)
]],
[ '$addFields' => [
'replies' => [
'$map' => [
'input' => '$replies',
'in' => [
'$mergeObjects' => [
'$$this',
[ 'is_liked' => [ '$in' => [ $user_id, '$$this.likes.user_id' ] ] ]
]
]
]
]
]],
... # any other pipeline
])
當(dāng)然,在這兩種情況下,$user_id您的 PHP 變量在哪里是 的參數(shù)中的奇異值$in,哪里是該內(nèi)部數(shù)組中值'$$this.likes.user_id'數(shù)組的 MongoDB 表示。user_id注意數(shù)組是第二個(gè)參數(shù),單數(shù)是第一個(gè)。
$map運(yùn)算符使用'$$this'來表示正在處理的數(shù)組的當(dāng)前元素。在這兩個(gè)示例中,這都允許重新映射數(shù)組內(nèi)容,正如運(yùn)算符名稱所暗示的那樣。
- 1 回答
- 0 關(guān)注
- 227 瀏覽
添加回答
舉報(bào)