MongoDB和PyMongo - 如何在单个文档字段

时间:2015-12-12 20:50:19

标签: python string mongodb pymongo concat

我是mongoDb的新手,我遇到了字符串字段“增量”的问题;)。我在“currentactivities”集合中有以下文档:

document={
    "name": "App  Name",
    "total Active": "10",
    "total Inactive": "60"
    "data": "Some data generated by app: 2ndkjasndu2iqeqjsma" 
}

我想附加“数据”字段,每天多次添加新的附加字符串值,例如使用以下数据:

“njsadklfu3j2n1km121”

所以更新后文档应如下所示:

document={
    "name": "App  Name",
    "total Active": "10",
    "total Inactive": "60"
    "data": "Some data generated by app: 2ndkjasndu2iqeqjsmanjsadklfu3j2n1km121" 
}

我使用Python 2.7,使用PyMongo和MongoDB 3.0。我尝试使用新的临时字符串数据插入附加字段并使用聚合framwework,但它不起作用。

currentactivities.update(
    {"name": "App Name"},
    {"$set": {"dataNew": "njsadklfu3j2n1km121"}
     }, upsert=True)

pipeline = [
        { "$project":
              {
                  "name":1,
                  "total Active":1,
                  "total Inactive":1,
                  "data": {"$concat": ["$data" , "$dataNew"] }
              }
        }
]
list(currentactivities.aggregate(pipeline))

我无法下载字段值,在客户端汇总字符串,因为整个“数据”字段将包含太多要在客户端<>之间发送的数据服务器。我只想推动差异添加到数据字段。任何人都知道如何在PyMongo中解决这个问题?

1 个答案:

答案 0 :(得分:1)

目前,您无法在更新期间使用文档字段的旧值,请参阅此JIRA票证。您必须光标查看记录并逐个更新记录。例如:

cursor = currentactivities.find({"name": "App Name"})

for document in cursor:
    currentactivities..update_one({"_id": document["_id"]},
   {"$set": {"dataNew": document["data"]+ "njsadklfu3j2n1km121"}}