【问题标题】:How to add length of one array field into another field in Mongodb document如何将一个数组字段的长度添加到MongoDB文档中的另一个字段中
【发布时间】:2021-01-12 13:46:57
【问题描述】:

我是 Mongodb 的新手。我的 Mongodb 版本是 v4.4.2。我在 Mongo 中创建了一个集合,并希望每次更新一条记录。 我收到此记录并搜索集合,如果该记录之前在集合中,我会更新它。除非,我插入记录。

dic = {"CST_NUM": "7101",
       "CNT_TRX_WEEK": 0.224,
       "cities": {"G": {"t": 6, "f": 0},
                  "K": {"t": 4, "f": 0}, "S": {"t": 1, "f": 0}},
       "cst_trm": ["123", "342"]
       }

另外,每条记录都有一个数组字段,当它更新时,我必须将数组字段的大小添加到记录的另一个字段中。它的名字是“cst_trm_cnt”。 我用这段代码更新了集合:

  mycollection.update_one(
 {"CST_NUM": dic["CST_NUM"]},
        {
            "$inc": {"CNT_TRX_WEEK": +dic["CNT_TRX_WEEK"],"cities.S.t": +dic["cities"]["S"]["t"]},
         "$addToSet": { "cst_trm": {"$each":dic["cst_trm"]}},
            "$addfield": {"cst_trm_cnt": {"$size":"cst_trm"}}
        }
    )  

但是,我在上面代码的最后一行收到了这个错误:

 pymongo.errors.WriteError: Unknown modifier: $addfield. Expected a valid update modifier or pipeline-style update specified as an array, full error: {'index': 0, 'code': 9, 'errmsg': 'Unknown modifier: $addfield. Expected a valid update modifier or pipeline-style update specified as an array'}

请指导我如何将数组的长度添加到 Mongo 记录的另一个字段中?

非常感谢任何帮助。

【问题讨论】:

    标签: python mongodb mongodb-query pymongo


    【解决方案1】:

    问题解决了。 更新后,在代码中,我必须在 $out 部分添加我已经制作的集合名称,除非 Mongo 构建一个新集合。代码如下:

     mytable.aggregate([
                 {"$addFields": {"cst_trm_cnt":{"$size":"$cst_trm"}}},
                 {"$out": "test"}
                       ])
    

    【讨论】:

      猜你喜欢
      • 2020-11-25
      • 2020-07-31
      • 2015-04-23
      • 2020-07-29
      • 1970-01-01
      • 1970-01-01
      • 2018-08-09
      • 1970-01-01
      • 2015-05-03
      相关资源
      最近更新 更多