【问题标题】:MongoDB set field base on length of an array fieldMongoDB 根据数组字段的长度设置字段
【发布时间】:2022-08-14 08:32:01
【问题描述】:

输入数据

{
user_name:\"jon_doe\", 
followers: [\"useroneID\", \"usertwoID\"],
followers_count: 2
}

我的代码

db.user.updateOne(
{user_name: \"jon_doe\"},
{
   $addToSet: {followers: \"userthreeID\"},
   $set: {followers_count: {$size: \"$followers\"}}
}

预期产出

{
user_name:\"jon_doe\", 
followers: [\"useroneID\", \"usertwoID\",\"userthreeID\"],
followers_count: 3
}

是否可以使用 mongoDB 以及我该怎么做,因为上面的代码不起作用

  • 请添加一些示例输入数据和您的预期输出

标签: mongodb


【解决方案1】:

update with the aggregation pipeline 上工作。

  1. $set - 将followers 字段设置为带有followers 和新值作为数组的concat 数组。使用$setUnion 以防止插入重复条目。
  2. $set - 设置 followers_count 字段并获取 followers 数组的大小。
    db.user.updateOne({
      user_name: "jon_doe"
    },
    [
      {
        $set: {
          followers: {
            $setUnion: [
              "$followers",
              [
                "userthreeID"
              ]
            ]
          }
        }
      },
      {
        $set: {
          followers_count: {
            $size: "$followers"
          }
        }
      }
    ])
    

    Sample Mongo Playground

【讨论】:

  • 很好,它工作得几乎完美,但追随者数组字段可能有重复,我该如何解决。
猜你喜欢
  • 2018-10-14
  • 2021-02-27
  • 2019-08-30
  • 2018-06-19
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多