亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

數組上的 updateMany()

數組上的 updateMany()

肥皂起泡泡 2022-12-29 16:37:55
在我的應用程序中,我有一個名為的集合Blog,我每 24 小時運行一次此查詢  await Blog.updateMany({}, [    {      $set: {        viewed: {          $add: [{ $size: "$visitorIps" }, "$viewed"]        },        visitorIps: []      }    }  ]);我的問題是我有一個名為Users. 在用戶內部,我有一個名為的數組posts,這里保存了該用戶的所有帖子。{   _id: 234klj2?34,   user: "Max",   posts: [      {         _id: 5dgewef323523,         name: "My first blogpost",         content: "...",         viewed: 0,         visitorIps: ["192.168.23.12"]      }   ]}現在我需要對每個數組的第二個集合進行相同的查詢。我該怎么做?我試過這樣的事情,但沒有用:  await User.updateMany({}, [    {      $set: {        "posts.$[].viewed: {          $add: [{ $size: "posts.$[].visitorIps" }, "posts.$[].viewed"]        },        "posts.$[].visitorIps": []      }    }  ]);但那是完全錯誤的。有人可以幫我嗎?
查看完整描述

1 回答

?
侃侃無極

TA貢獻2051條經驗 獲得超10個贊

您可以嘗試使用$map,

  • viewed您的邏輯和代碼對于and保持不變visitorIps

  • $mergeObjects將合并當前游標字段和viewed我們visitorIps計算的

await User.updateMany({},

    [{

        $set: {

            posts: {

                $map: {

                    input: "$posts",

                    as: "post",

                    in: {

                        $mergeObjects: [

                            "$$post",

                            {

                                "viewed": {

                                    $add: [{ $size: "$$post.visitorIps" }, "$$post.viewed"]

                                },

                                "visitorIps": []

                            }

                        ]

                    }

                }

            }

        }

    }]

)


查看完整回答
反對 回復 2022-12-29
  • 1 回答
  • 0 關注
  • 109 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號