MongoDB "$or" 更新
我有一些代码是用来从Mongo数据库中删除多个对象的,使用的是一个叫做$or
的操作符,或者说应该是这样。这段代码基本上展示了我的应用程序在做什么。
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数据库,photos是其中的一个集合。
这段代码是用Python写的,但我想语法应该很容易理解。
1 个回答
3
你需要把 multi
参数设置为 True
,这样才能更新所有符合你查询条件的文档。否则,它只会更新第一个文档(你可能没注意到这一点)。详细信息可以查看 Collection.update。
(另外,如果你要查询某个字段的多个值,可以使用 $in 操作符。)