mongodb - 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_ids
,fruit_names
但在同一索引处,
例如对于上述输入,我想farm_id: 3344
{name: "Orange", id:"id1"}
删除。
谁能帮帮我吗。
解决方案
您可以使用$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
.
推荐阅读
- python - 如何从 django 的纯 html 中的选择选项值返回 int
- android-sqlite - 如何在查询 SQLite 查询语句中使用两个运算符?
- c - 为什么代码不反转字符串?
- c# - 使用 Microsoft.AspNet.WebApi.Versioning 的 Web API 2 版本控制
- java - azure-cosmosdb-java 中的“分组依据”功能
- python - 解释器忽略了我的 python 代码中的部分函数
- mercurial - 如何解决“hg verify”揭示的“完整性错误”
- linux - 如何从 Bash 脚本中列出目标 PID 的孙 PID?
- haskell - 在haskell中如何将值解析为这个插入函数
- python-3.x - .destroy() 之后是否有可能“恢复”按钮?