【问题标题】:pymongo update all documents in collection for field with it's substring valuepymongo 用它的子字符串值更新字段集合中的所有文档
【发布时间】:2021-02-28 15:50:33
【问题描述】:
{'some': 'abcdefg', 'some2': 'hijklmn'}

期望的输出

{'some': 'abc', 'some2': 'hij'}

换句话说,子字符串 [:3]

如何使用 pymongo 实现这一目标

【问题讨论】:

    标签: python python-3.x mongodb pymongo pymongo-3.x


    【解决方案1】:

    您可以将 updatemany 与聚合一起使用:https://docs.mongodb.com/manual/tutorial/update-documents-with-aggregation-pipeline/

    update_pipe =   [
                          { "$set":
                                  { "some":
                                          { "$substr":  ['$some', 0,3]}
                                  },
                          },
                           
                          { "$set":
                                  { "some2":
                                          { "$substr":  ['$some2', 0,3]}
                                  },
                          }
                      ]
    collection.update_many({}, update_pipe)
    

    【讨论】:

    • 可以像在python中那样使用负索引吗?例如 0, -14?
    • 对长度参数使用负值会从起始索引返回字符串的其余部分,因此在这种情况下,是整个字符串。
    • 所以答案是否定的,然后我需要遍历文档并计算正确的索引,有什么帮助吗?
    • 取决于您的需要,您可以使用字符串的长度和 $add/$subtract 来获得正确的索引。 stackoverflow.com/questions/56537076/…
    猜你喜欢
    • 1970-01-01
    • 2021-12-14
    • 2018-01-09
    • 1970-01-01
    • 2021-05-21
    • 1970-01-01
    • 2017-04-15
    • 1970-01-01
    • 2021-08-16
    相关资源
    最近更新 更多