首页 > 解决方案 > MongoDB查询同一索引处的两个输入数组?

问题描述

n我有两个由输入定义的长度数组 A 和 B ,

fruit_ids = [{id: "id1"}, {id: "id2"}, {id:"id3"}]; fruit_names = [{name: "Orange"},{name: "Kiwi"},{name: "Banana"}]

和 MongoDB 文档

{ farm_id: "3344", fruits: [{name: "Orange", id:"id1"}, {name: "Kiwi", id:"id67"}]}

现在我想编写一个 Mongo 查询,以便它从数组中指定的特定 farm_id 中提取项目fruit_idsfruit_names但在同一索引处,

例如对于上述输入,我想farm_id: 3344 {name: "Orange", id:"id1"}删除。

谁能帮帮我吗。

标签: mongodb

解决方案


您可以使用$pullAll运算符删除所有匹配元素并使用以下代码动态构建更新语句:

var fruit_ids = [{id: "id1"}, {id: "id2"}, {id:"id3"}]; 
var fruit_names = [{name: "Orange"},{name: "Apple"},{name: "Banana"}];

var pullAll = {
    $pullAll: { fruits: fruit_ids.map((id, index) => Object.assign(fruit_names[index], id)) }
}

db.col.update({ farm_id: 3344 }, pullAll)

这只会尝试更新farm_id: 3344.


推荐阅读