Mongodb PyMongo在find_和_modify()调用中存在条件更新问题

Mongodb PyMongo在find_和_modify()调用中存在条件更新问题,mongodb,pymongo,Mongodb,Pymongo,我正在尝试对嵌套值执行条件更新。基本上,每个数组项包含2个变量的嵌套数组中的一个变量有一个布尔组件,我想根据另一个变量的字符串值进行更新 我还想基于目标查找查询来完成所有这些。我在下面想出了这个,但它不起作用 #!/usr/bin/env python import ssl from pymongo import MongoClient client = MongoClient("somehost", ssl=True, ssl_cert_reqs=ssl.CERT_NONE, repli

我正在尝试对嵌套值执行条件更新。基本上,每个数组项包含2个变量的嵌套数组中的一个变量有一个布尔组件,我想根据另一个变量的字符串值进行更新

我还想基于目标查找查询来完成所有这些。我在下面想出了这个,但它不起作用

#!/usr/bin/env python

import ssl

from pymongo import MongoClient

client = MongoClient("somehost", ssl=True, ssl_cert_reqs=ssl.CERT_NONE, replicaSet='rs0')
db = client.maestro
mycollection = db.users
print 'connected, now performing update'
mycollection.find_and_modify(query={'emailAddress':'somedude@someplace.wat'}, update={ "nested.name" : "issomename" }, { "$set": {'nested.$*.value': True}}, upsert=True, full_response=True)
此代码导致:

SyntaxError: non-keyword arg after keyword arg
这使我认为find_和_modify()方法无法处理条件更新位


有什么办法可以做到这一点,还是我走错了路?您认为哪种方法更好?

如果您只想更新一条记录,而不是查找任何修改,请使用update\u one,如果需要更新多条记录,请使用update\u one

用法如下:

mycollection.upadte_one({'emailAddress':'somedude@someplace.wat'},{“$set”:{'nested.$*.value':True})

有关更多详细信息,请访问此链接:

这就成功了

#!/usr/bin/env python

import ssl

from pymongo import MongoClient


client = MongoClient("somehost.wat", ssl=True, ssl_cert_reqs=ssl.CERT_NONE, replicaSet='rs0')
db = client.dbname
mycollection = db.docs
user_email = 'user@somehost.wat'
mycollection.update({ "emailAddress": user_email,"nestedvalue": { "$elemMatch" : {"name": "somename"} } }, { "$set": {"nestedvalue.$.value": True}})