2011-10-04 69 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。)