【问题标题】:$INC with $SET in mongoDBmongoDB 中的 $INC 和 $SET
【发布时间】:2021-03-27 13:00:35
【问题描述】:

我正在尝试在 mongodb 中更新一个可以作为简单摘要的集合。 示例:按订单的平均数量,因此每次创建客户订单时,我都会更新此集合。 我的问题是当我试图根据新字段值做一个简单的平均值时。像这样的:

db.test.update_one(
    {"year": 2021},
    {
        "$inc": { "quantity": 10, "orders": 1 },
        "set": {"mean_orders": { '$divide': [ '$quantity', '$orders' ] } }
    }
)

我正在使用 Pymongo (mongo v4.2.8),消息错误是:

'mean_orders.$divide' 中的美元 ($) 前缀字段 '$divide' 是 不适用于存储。

任何提示如何在更新数据的“$inc”之后进行此计算?

谢谢!

【问题讨论】:

    标签: mongodb pymongo


    【解决方案1】:

    你不能一步完成;您必须在聚合管道的两个阶段中执行此操作;请注意$inc 不是聚合管道运算符,因此您必须使用$sum;例如:

    db.test.update_one(
    {"year": 2021},
    [
        {"$set": {"quantity": {'$sum': ['$quantity', 10]},
                  "orders": {'$sum': ['$orders', 1]}}},
        {'$set': {"mean_orders": {'$divide': ['$quantity', '$orders']}}}
    ])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-30
      • 2015-11-10
      • 1970-01-01
      相关资源
      最近更新 更多