MongoDB“$或”更新
问题描述:
我有一些代码使用$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,但我想的语法是很容易跟随
答
您需要将multi
参数,以便更新符合您查询所有文件设置为True
。否则,它只会更新第一个(你可能只是不会注意到)。请参阅Collection.update。
(另请注意:如果您要查询单个字段的多个值,则可以使用$in operator。)