mongodb - 将数组元素与另一个数组合并,该数组是 mongo 集合的一部分
问题描述
我有以下名为 sample_collection 的集合。
{'_id': ObjectId('603e9cc2784fa0d80d8672cd'),
'name': 'balaji',
'**B**': [{'price': 1, 'price_range': 'G'},
{'price': 6, 'price_range': 'F'},
{'price': 4, 'price_range': 'C'}]}
我有一个名为 A = [{'price': 22, 'price_range': 'X'}, {'price': 33, 'price_range': 'U'} ] 的数组
我正在尝试将数组A的元素合并到名称为B的数组中,该数组是上述集合的一部分,带有下面的 pymongo 查询。
db.sample_collection.update_one({"name": "balaji"}, {"$addToSet": {"B": A}})
但是,我看到整个数组正在与上述集合合并,如下所示。
[{'_id': ObjectId('603e9cc2784fa0d80d8672cd'),
'name': 'balaji',
'B': [{'price': 1, 'price_range': 'G'},
{'price': 6, 'price_range': 'F'},
{'price': 4, 'price_range': 'C'},
[{'price': 22, 'price_range': "X"}
{'price': 33, 'price_range': 'U'}]]} (we can see another square brackets for 22 and 33)
但是我需要将数组 A 的元素(但不是数组本身)与集合数组 B 合并,并且预期的结果需要是
[{'_id': ObjectId('603e9cc2784fa0d80d8672cd'),
'name': 'balaji',
'B': [{'price': 1, 'price_range': 'G'},
{'price': 6, 'price_range': 'F'},
{'price': 4, 'price_range': 'C'},
{'price': 22, 'price_range': "X"}
{'price': 33, 'price_range': 'U'}} (here there are no square brackets for elements with price 22 and 33)
请问我可以知道上面的查询。
解决方案
要 $push 或 $addToSet 数组的各个成员,请将$each运算符与更新一起使用,例如:
db.sample_collection.update_one({"name": "balaji"}, {"$addToSet": {"B": {$each: A}}})