【问题标题】:how to add values using mongodb aggregation如何使用 mongodb 聚合添加值
【发布时间】:2021-12-05 04:30:20
【问题描述】:

有没有办法通过聚合添加值 像 db.insert_one

x = db.aggregate([{
    "$addFields": {
        "chat_id": -10013345566,
    }
}])

我试过这个 但是这段代码什么也不返回,值也没有更新

我想通过聚合添加值 因为聚合比其他聚合快得多

示例文档:

    {"_id": 123 , "chat_id" : 125}
    {"_id": 234, "chat_id" : 1325}
    {"_id": 1323 , "chat_id" : 335}

预期输出:

在 mongodb 聚合中替代 db.insert_one()

【问题讨论】:

  • 分享示例文档和预期输出
  • @hhharsha36 检查编辑

标签: python mongodb mongodb-query


【解决方案1】:

您必须利用$merge 阶段将聚合的输出保存到集合中。

注意:使用$merge 阶段时要非常小心,因为您可能会不小心替换集合中的整个文档。使用前请阅读此阶段的完整文档。

db.collection.aggregate([
  {
    "$match": {
      "_id": 123
    }
  },
  {
    "$addFields": {
      "chat_id": -10013345566,
      
    }
  },
  {
    "$merge": {
      "into": "collection",  // <- Collection Name
      "on": "_id",  // <- Merge operation match key
      "whenMatched": "merge"  // <- Operation to perform when matched
    }
  },
])

Mongo Playground Sample Execution

【讨论】:

  • 但我只想更新单个值
  • 在这种情况下,您必须确保在最后阶段之前只返回单个字段和 _id 字段,并使用 whenMatched: "merge" 选项执行 $merge。无论如何,你要找的只有$merge阶段才能实现。
猜你喜欢
  • 2021-06-12
  • 1970-01-01
  • 1970-01-01
  • 2023-02-16
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 2020-07-03
  • 1970-01-01
相关资源
最近更新 更多