我有一些代码可以使用 $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 数据库,photos 是集合。
这段代码是用Python编写的,但我想语法很容易理解
最佳答案
您需要将 multi
参数设置为 True
才能更新与您的查询匹配的所有文档。否则,它只会更新第一个(您可能没有注意到)。请参阅Collection.update .
(另请注意:如果您要查询单个字段的多个值,则可以使用 $in operator 。)
关于python - MongoDB "$or"更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7652370/