MongoDB "$ or" обновление - PullRequest
       4

MongoDB "$ or" обновление

1 голос
/ 04 октября 2011

У меня есть код, который удаляет несколько объектов из 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, фотографии - это коллекция.

Этот код написан на Python, но я бы представил синтаксисдостаточно легко следовать

1 Ответ

3 голосов
/ 04 октября 2011

Вам необходимо установить для параметра multi значение True, чтобы обновить все документы, соответствующие вашему запросу. В противном случае, он обновляет только первый (который вы, вероятно, просто не замечаете). См. Collection.update .

(Также обратите внимание: если вы запрашиваете несколько значений одного поля, вы можете использовать $ в операторе .)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...