gpt4 book ai didi

javascript - 数组上的 updateMany()

转载 作者:行者123 更新时间:2023-12-04 09:10:17 24 4
gpt4 key购买 nike

在我的应用程序中,我有一个名为 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": []
}
}
]);
但那是完全错误的。有人可以帮我吗?

最佳答案

您可以尝试使用 $map ,

  • 您的逻辑和代码对于 viewed 保持不变和 visitorIps
  • $mergeObjects将合并当前光标字段和 viewedvisitorIps我们已经计算出
  • await User.updateMany({},
    [{
    $set: {
    posts: {
    $map: {
    input: "$posts",
    as: "post",
    in: {
    $mergeObjects: [
    "$$post",
    {
    "viewed": {
    $add: [{ $size: "$$post.visitorIps" }, "$$post.viewed"]
    },
    "visitorIps": []
    }
    ]
    }
    }
    }
    }
    }]
    )

    关于javascript - 数组上的 updateMany(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63362313/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com