arrays - 使用不同的值更新MongoDB中数组内的多个对象值而不循环,但纯查询
问题描述
我想在 MongoDB 中更新此文档
[
{
"persons" : [
{
"name":"Javier",
"occupation":"teacher"
},
{
"name":"Juliana",
"occupation":"novelist"
},
{
"name":"Henry",
"occupation":"plumber"
}
]
}
]
假设我有一个包含这个的全局数组变量
var peopleGlobalVar = [
{
"name":"Javier",
"occupation":"gardener"
},
{
"name":"Henry",
"occupation":"postman"
}
]
我想用 globalVar 中的值更新文档,而不使用常见的 javascript 循环,所以如果名称匹配,职业值会改变,我正在寻找“纯查询”解决方案。
我期望的代码:
collection.update(
{},
{
$set: {
// code ...
}
},
{
$arrayFilter: [
{
"elem.name": {
$in:
$function : {
body: function(updatedPeopleFromGlobalVariable){
let names = [];
updatedPeopleFromGlobalVariable.forEach(function(person){
names.push(person.name);
return names;
},
args: peopleGlobalVar,
lang:"js",
}
},
"multi": true
}
]
}
)
输出应该是什么
[
{
"persons" : [
{
"name":"Javier",
"occupation":"gardener"
},
{
"name":"Juliana",
"occupation":"novelist"
},
{
"name":"Henry",
"occupation":"postman"
}
]
}
]
有人有解决方案吗?
解决方案
推荐阅读
- scala - 为什么加入使用 20 秒水印后发送的行?
- karate - 空手道 API - 错误 com.intuit.karate.core.FeatureParser - 语法错误:升级到 0.9.0
- node.js - 定制的 Hyperledger Explorer 是可能的……?
- google-sheets - 使用正则表达式提取的 Vlookup - Google 表格
- windows - 使用 Windows API 在 Rust 中创建一个弹出窗口
- python - 为什么下面的代码只打印出 python 2.7 中的内存位置?
- android - Android 应用 SHA-1 身份验证失败 firebase
- html - 带有多个选项的引导选择无法正常工作
- angular-directive - 组件未接收到指令事件
- python - 我如何设置权重并在以后训练它们?