PyMongo - 将属性中的所有值设置为小写

Cas*_* H. 1 python mongodb pymongo

我正在清理一个数据集,并且有一个字段性别。在该字段中,有“男性”、“男性”和“男性”等条目。为了解决这个问题,我正在尝试使用 pymongo 更新我的 MongoDB 数据库。

在数据库中,Gender属性是Gender(前面有一个大写的G)

我的代码目前看起来像这样:

import pymongo
from pymongo import MongoClient


db_info = {
    'db_name': 'MentalHealth',
    'collection_name': 'MentalHealth',
}

if __name__ == "__main__":

    mongo_client = MongoClient()
    mongo_db = mongo_client[db_info['db_name']]
    mongo_collection = mongo_db[db_info['collection_name']]

    #normalize to lowercase
    mongo_collection.aggregate([{ '$project': { 'Gender':{ '$toLower':"$Gender"}}}])
Run Code Online (Sandbox Code Playgroud)

代码运行没有问题,但数据库没有更新,我不确定代码有什么错误。任何帮助将不胜感激。谢谢!!!

小智 5

Mongodb 聚合操作处理数据记录并返回计算结果。它无法更新任何集合。你可以像这样更新

db.mongo_collection.find({}).forEach(function(doc) {
    db.mongo_collection.update(
        { "_id": doc._id },
        { "$set": { "Gender": doc.Gender.toUpperCase() } }
    );
});
Run Code Online (Sandbox Code Playgroud)

  • 这个问题被标记为“pymongo”,但是您的解决方案使用的是“js” (4认同)
  • 感谢您的帮助。正如垃圾收集器所说,这不是在 python 中,而是在 js 中,但我感谢您的帮助! (2认同)