Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据mongo中的多个字段的存在情况更新它们_Python_Mongodb_Pymongo - Fatal编程技术网

Python 根据mongo中的多个字段的存在情况更新它们

Python 根据mongo中的多个字段的存在情况更新它们,python,mongodb,pymongo,Python,Mongodb,Pymongo,我正在尝试将所选字段从集合“a”复制到集合“b”。 我想根据a中是否存在字段,在b上设置多个字段。 i、 e如果“a”中不存在该字段;那么我不想把它设为“b” 这就是我正在尝试的 b.update_one( {"_id": xyz}, {"$set": {"name": a['name'], "lastname": a.get('lastname', None)}}) 如果lastname不

我正在尝试将所选字段从集合“a”复制到集合“b”。 我想根据a中是否存在字段,在b上设置多个字段。 i、 e如果“a”中不存在该字段;那么我不想把它设为“b”

这就是我正在尝试的

b.update_one(
              {"_id": xyz},
              {"$set": {"name": a['name'],
                        "lastname": a.get('lastname', None)}})
如果lastname不存在,我就不知道了。 如果“a”中没有lastname,我根本不希望更新lastname。
除了使用两个set语句外,还有其他选择吗?

事先准备更新定义。例如,假设
a
具有以下值:

a = {
    'name': 'John'
}
然后定义更新,使其仅包含您感兴趣的
a
中的字段(以及
a
中的字段):

现在执行更新:

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