第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何在嵌入數(shù)組mongodb的數(shù)組中使用$in

如何在嵌入數(shù)組mongodb的數(shù)組中使用$in

PHP
紅糖糍粑 2022-01-23 10:51:54
我有 photos_comments 收藏:{    "_id" : ObjectId(""),    "photo_id" : ObjectId(""),    "content" : "Comment 1",    "is_approved" : "1",    "user" : {        "user_id" : ObjectId(""),        "name" : "",        "avatar" : ".jpg"    },    "likes" : [         {            "user_id" : ObjectId("")        }    ],    "like_count" : 1,    "reply_count" : 5,    "replies" : [         {            "reply_id" : ObjectId(""),            "content" : "Reply 1",            "is_approved" : "1",            "user" : {                "user_id" : ObjectId(""),                "name" : "",                "avatar" : ".jpg"            },            "likes" : [                 {                    "user_id" : ObjectId("")                }            ],            "like_count" : 1        },     ]}我使用 $in 檢查當(dāng)前用戶是否喜歡回復(fù)評(píng)論:$collection->aggregate(                        [                            [                                '$match' => [                                    '_id' => new ObjectId($comment_id)                                ]                            ],                            [                                '$project' => [                                    'replies.reply_id' => 1,                                    'replies.like_count' => 1,                                    'replies.content' => 1,                                    'replies.is_liked' => ['$in' => [['user_id' => $user_id], '$replies.likes']],                                    'replies.user' => 1,                                    'replies.created_at' => 1                                ]                            ],                            ['$sort' => ["replies.reply_id" => 1]],                            ['$limit' => 5]                        ]);但是replies.is_liked 總是返回false,盡管它存在于replies 數(shù)組嵌入的likes 數(shù)組中的user_id。如何解決?謝謝!看起來您的帖子主要是代碼;請(qǐng)?zhí)砑痈嗉?xì)節(jié)。
查看完整描述

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)算符名稱所暗示的那樣。


查看完整回答
反對(duì) 回復(fù) 2022-01-23
  • 1 回答
  • 0 關(guān)注
  • 227 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)