как обновить несколько встроенных документов в mongoengine - PullRequest
0 голосов
/ 20 июня 2020

mon go следующая коллекция:

{
"_id" : ObjectId("5eedb36d6cd00ed8e8748cc7"),
"user" : "5",
"search" : [
    {
        "name" : "first",
        "status" : 1
    },
    {
        "name" : "second",
        "status" : 0
    },
    {
        "name" : "third",
        "status" : 0
    }
 ] 
}

и модели:

class HistoryItem(models.EmbeddedDocument):
    name = models.StringField()
    status = models.IntField()

class History(models.Document):
    user = models.StringField(unique=True)
    search = models.EmbeddedDocumentListField(HistoryItem, default=[])

Я хочу обновить статус всех EmbeddedDocument до 1,

Я пытаюсь это:

mongo_models.History.objects(user="5", search__status=0).update(set__search__S__status=1)

, но просто обновите первый EmbeddedDocument со статусом 0, что мне следует изменить в моем коде, чтобы обновить все EmbeddedDocument. Спасибо.

1 Ответ

0 голосов
/ 20 июня 2020

Из-за Mon go в настоящее время оператор $ применяется только к первому совпавшему элементу в запросе

из mongoengine do c.

...