mongodb - 在 MongoDB 中查询以在对象数组中添加值
问题描述
我在集合中有这个文件,称为authors
:
// document 1
{
"_id": 1,
"name": 'Peter'
"experiments_papers":[
{
"id_experiment": 1,
"ids_papers": [1, 2, 3]
},
{
"id_experiment": 2,
"ids_papers": [10, 11, 12]
}
]
}
// document 2
{
"_id": 2,
"name": 'John'
"experiments_papers":[
{
"id_experiment": 1,
"ids_papers": [10, 20, 30]
},
{
"id_experiment": 5,
"ids_papers": [100, 110, 120]
}
]
}
所以我想更新所有作者id_paper
在ids_papers
数组中添加一个id_experiment = 1
添加后的示例结果id_paper = 4
:
// document 1
{
"_id": 1,
"name": 'Peter'
"experiments_papers":[
{
"id_experiment": 1,
"ids_papers": [1, 2, 3, 4]
},
{
"id_experiment": 2,
"ids_papers": [10, 11, 12]
}
]
}
// document 2
{
"_id": 2,
"name": 'John'
"experiments_papers":[
{
"id_experiment": 1,
"ids_papers": [10, 20, 30, 4]
},
{
"id_experiment": 5,
"ids_papers": [100, 110, 120]
}
]
}
添加后id_paper
,我想得到id_experiment = 1
只有这个实验在experiments_papers
数组中的作者。
此查询后的示例:
// document 1
{
"_id": 1,
"name": 'Peter'
"experiments_papers":[
{
"id_experiment": 1,
"ids_papers": [1, 2, 3, 4]
}
]
}
// document 2
{
"_id": 2,
"name": 'John'
"experiments_papers":[
{
"id_experiment": 1,
"ids_papers": [10, 20, 30, 4]
}
]
}
谢谢
解决方案
所以你会这样查询Update
:
首先查询那些已经id = 1
推送到相应数组的人
db.collection.update({
"experiments_papers.id_experiment": 1
},
{
$push: {
"experiments_papers.$.ids_papers": 4
}
})
当然你不必 push 4
,但你想要什么。
推荐阅读
- javascript - 如何在库中单独更改每张卡片的“卡片背面图像”:Deck-of-Cards.js?
- c++ - 如何根据返回类型推断模板参数?
- c++ - 如何使用 libcurl 存储发送/接收的数据
- rust - Rust 类型转换
- javascript - 如何加载 IP 范围列表以将其与 $allowedIps 脚本一起使用?
- javascript - 使用嵌套对象循环数组
- html - 具有透明背景的材料主题轮廓选择
- javascript - html 输入后更改/替换字符串
- python - 使用柯南构建多个库并打包它们以在没有柯南的情况下使用
- php - 将未选择的列表框值从 html 回显到 php