Обновите несколько полей в Монго в зависимости от их существования - PullRequest
0 голосов
/ 27 сентября 2019

Я пытаюсь скопировать выбранные поля из коллекции 'a' в коллекцию 'b'.Я хотел бы установить несколько полей на b в зависимости от того, существуют ли они в aie. Если поля не существует в 'a;тогда я не хочу устанавливать его в 'b'.

Это то, что я пытаюсь

b.update_one(
              {"_id": xyz},
              {"$set": {"name": a['name'],
                        "lastname": a.get('lastname', None)}})

Это дает мне None - фамилия не существует.Я не хочу, чтобы фамилия вообще обновлялась, если в «а» нет фамилии.Есть ли другая альтернатива, кроме использования двух операторов набора?

1 Ответ

0 голосов
/ 28 сентября 2019

Подготовьте определение обновления заранее.Например, предположим, что a имеет это значение:

a = {
    'name': 'John'
}

Затем определите обновление так, чтобы оно содержало только поля из a, которые вас интересуют (и которые присутствуют в a):

update = {
    'name': a.get('name'),
    'lastname': a.get('lastname')
    ...
}
update = {k: v for k, v in update.items() if v is not None}

Теперь выполните обновление:

b.update_one(
    {"_id": xyz},
    {"$set": update}
)
...