pymongo 用它的子字符串值更新字段集合中的所有文档

Posted

技术标签:

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

期望的输出

'some': 'abc', 'some2': 'hij'

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

如何使用 pymongo 实现这一目标

【问题讨论】:

【参考方案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 来获得正确的索引。 ***.com/questions/56537076/…

以上是关于pymongo 用它的子字符串值更新字段集合中的所有文档的主要内容,如果未能解决你的问题,请参考以下文章

pymongo实战

PyMongo - 将属性中的所有值设置为小写[重复]

pymongo创建索引更新删除

如何使用 PyMongo 查找所有集合的名称?

如何使用 pymongo 更新值?

MongoDB:使用pymongo在一个集合中删除多个文档中的数组值