将数组元素与属于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&quot美元:{"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'}]]} (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数组的单个成员,可以使用带update的$each操作符,例如:

db.sample_collection.update_one({"name": "balaji"}, {"$addToSet": {"B": {$each: A}}})

相关内容

最新更新