mongodb 如何将字段添加到前100个文档的值为1,后100个文档的值为2等的所有文档中?

rkkpypqq  于 2023-04-20  发布在  Go
关注(0)|答案(1)|浏览(112)

我有一个包含10,000个文档的MongoDB集合。我想为每个包含字符串值的文档添加一个新字段,其中前100个文档的值应该为“1”,接下来的100个文档的值应该为“2”,依此类推。我该如何做到这一点?

njthzxwz

njthzxwz1#

一个选项是使用$setWindowFields

db.collection.aggregate([
  {$setWindowFields: {
      sortBy: {date: 1},
      output: {value: {
          $sum: 1,
          window: {documents: ["unbounded", "current"]}
      }}
  }},
  {$set: {
      value: {$toString: {
          $add: [
            {$floor: {$divide: [{$subtract: ["$value", 1]}, 100]}},
            1
          ]
      }}
  }}
])

了解它在playground example上的工作原理

相关问题