Arrays MongoDB。如何在数组中将字段从一个子文档移动到另一个子文档?
我有一个这样的收藏Arrays MongoDB。如何在数组中将字段从一个子文档移动到另一个子文档?,arrays,mongodb,pymongo-3.x,Arrays,Mongodb,Pymongo 3.x,我有一个这样的收藏 { "key_a": 1, "key_b": [ {"name": "pepe"}, {"name": "juan", "code": 12345}, {"name": "luis", "code": 5678
{ "key_a": 1,
"key_b": [
{"name": "pepe"},
{"name": "juan", "code": 12345},
{"name": "luis", "code": 5678}
]
}
“key_b”是一个文档数组。我想找到包含“pepe”和“juan”的文档,然后将“code”从“juan”移动到“pepe”。结果将是:
{ "key_a": 1,
"key_b": [
{"name": "pepe", "code": 12345},
{"name": "juan"},
{"name": "luis", "code": 5678}
]
}
最好的方法是什么?我正在使用pymongo。我将分两步完成这项工作。它不是严格地移动字段,而是更新两个文档 在MongoDB中,可以使用$unset删除字段: 那么你可以用
findOneAndUpdate({ name: "pepe"}, { "code": newValue }, { upsert: true}).exec()
(示例为mongoose,Pymongo更新语法如下:,不确定Pymongo中的$unset)您可以使用聚合管道将a字段的值移动到另一个字段,然后执行更新-这是使用4.2之前的MongoDB版本。在版本4.2中,您可以为此操作执行一次操作-这将是一次操作。此解决方案不起作用或不完整。第一步删除“代码”和值。因此,newValue不存在。我想将值从一个文档移动到另一个文档。嘿,胡安,好吧,实际上没有一种简单的方法将值从一个文档移动到另一个文档。由于要删除该字段,您可能需要首先从名为juan的文档中获取值,并将其存储在“newValue”变量中(如何存储临时变量取决于您自己)
findOneAndUpdate({ name: "pepe"}, { "code": newValue }, { upsert: true}).exec()