2016-08-04 121 views
0

我想對嵌套值進行條件更新。基本上,每個數組項的2個變量嵌套數組中的一個變量具有一個布爾組件,我想根據另一個變量的字符串值進行更新。PyMongo與find_and_modify()內部條件更新的問題調用

我也想做所有基於有針對性的查找查詢。我在下面想到了這一點,但它不起作用。

#!/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':'[email protected]'}, update={ "nested.name" : "issomename" }, { "$set": {'nested.$*.value': True}}, upsert=True, full_response=True) 

該代碼產生:

SyntaxError: non-keyword arg after keyword arg 

這讓我覺得find_and_modify()方法無法處理條件更新位。

有沒有辦法達到這個目的,還是我走錯了路?你會怎麼建議作爲一個更好的方法?

回答

0
#!/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 = '[email protected]' 
mycollection.update({ "emailAddress": user_email,"nestedvalue": { "$elemMatch" : {"name": "somename"} } }, { "$set": {"nestedvalue.$.value": True}}) 

這並獲得成功。