PyMonogo - 从列表中设置新字段或添加到字段(如果存在)
PyMonogo - from a list, setting new field or adding to field if it exists
adjustments = [
['Capital','','100'],
['Training','100',''],
['Training','200',''],
]
for a in adjustments:
query = { "Account": a[0] }
newvalues = { "$set": { "Adj_DR": a[1], "Adj_CR": a[2] } }
col.update_one(query, newvalues)
将Adj_DR
和Adj_CR
分别设置为a[1]
和a[2]
有效。但是,当一个帐户已经存在时,我希望添加该值。即 Training
的 Adj_DR
应等于 300。目前,代码仅将 Adj_DR
设置为 200,因为它是列表中的最后一个值(并简单地覆盖 100)。我试过使用 $inc
,但我很难理解如何让它在这里工作。
我尝试使用 a similar question 的答案 - 但是没有成功。
感谢您的帮助
我认为这就是 $inc
的目的。但它可能只适用于数字。
这应该有效:
for a in adjustments:
query = { "Account": a[0] }
newvalues = { "$inc": { "Adj_DR": int(a[1]), "Adj_CR": int(a[2]) } }
col.update_one(query, newvalues)
adjustments = [
['Capital','','100'],
['Training','100',''],
['Training','200',''],
]
for a in adjustments:
query = { "Account": a[0] }
newvalues = { "$set": { "Adj_DR": a[1], "Adj_CR": a[2] } }
col.update_one(query, newvalues)
将Adj_DR
和Adj_CR
分别设置为a[1]
和a[2]
有效。但是,当一个帐户已经存在时,我希望添加该值。即 Training
的 Adj_DR
应等于 300。目前,代码仅将 Adj_DR
设置为 200,因为它是列表中的最后一个值(并简单地覆盖 100)。我试过使用 $inc
,但我很难理解如何让它在这里工作。
我尝试使用 a similar question 的答案 - 但是没有成功。
感谢您的帮助
我认为这就是 $inc
的目的。但它可能只适用于数字。
这应该有效:
for a in adjustments:
query = { "Account": a[0] }
newvalues = { "$inc": { "Adj_DR": int(a[1]), "Adj_CR": int(a[2]) } }
col.update_one(query, newvalues)