2011-10-04 75 views
1

我有一些代碼使用$or操作符刪除Mongo中的多個對象,或者至少它應該。此代碼基本上說明了我的應用程序正在做什麼

lookup = [] 
listofids = ['4e86fee56607f2a8a2000002','4e86fee56607f2a8a2000003','4e86feeb6607f2a8a2000006'] 
for id in listofids: 
    lookup.append({'_id':core.ObjectId(id)}) 

r = self.db().photos.update({ 
    "$or":lookup 
},{ 
    '$set':{'var':'value'} 
}) 

這不起作用,它不更新任何文檔。但是,如果我更改代碼做基本查找

lookup = [] 
listofids = ['4e86fee56607f2a8a2000002','4e86fee56607f2a8a2000003','4e86feeb6607f2a8a2000006'] 
for id in listofids: 
    lookup.append({'_id':core.ObjectId(id)}) 

r = self.db().photos.find({ 
    "$or":lookup 
}) 

for rs in r: 
    self.write(str(rs)+"\n\n") 

它輸出所有記錄。我如何讓Mongo更新記錄?

self.db()映射到MongoDB數據庫,照片是集合。

此代碼是在Python,但我想的語法是很容易跟隨

回答

3

您需要將multi參數,以便更新符合您查詢所有文件設置爲True。否則,它只會更新第一個(你可能只是不會注意到)。請參閱Collection.update

(另請注意:如果您要查詢單個字段的多個值,則可以使用$in operator。)