node.js - 返回nodejs和mongodb中嵌套数组的一项
问题描述
我只需要在 MongoDB 的嵌套数组中提取一项。
这是模型:
const docShema= new mongoose.Schema({
value1: {
type: String
},
mainArray: [{
value2: {
type: String
},
secondArray: [{
subValue1: {
type: String
},
subValue2: {
type: String
},
}],
}],
});
这是我尝试过的:
Collection.findOne({ "value1": "somevalue", "mainArray.secondArray.subValue1": "A" }, { "mainArray.secondArray.$": 1 }).exec((err, result) => {
res.status(200).send(result)
})
以下是返回的内容:
{
_id: "5ef39f491ece670db31f1f39",
mainArray: [
{
value2: "firstvalue",
_id: "5ef39f491ece670db31f1f73",
secondArray: [
{
subValue1: "A",
subValue2: "Red",
_id: "5ef39f491ece670db31f1f79"
},
{
subValue1: "B",
subValue2: "Blue",
_id: "5ef39f491ece670db31f1f78"
},
{
subValue1: "C",
subValue2: "Green",
_id: "5ef39f491ece670db31f1f77"
}
]
}
]
}
如您所见,mainArray 中的完整项目已返回。但我只想要第二个数组中的一个项目,然后在后续操作中我将只更新返回的部分。所以可以改用fineOneAndUpdate。我仅将 findOne 用于测试目的。
解决方案
您只能array-filters
在单个查询中使用和更新它。参考:位置更新
推荐阅读
- c++ - 如何在 QT 中添加状态栏(不使用表单)并显示文本的长度和他的坐标(正在刷新)?
- azure-devops - 如何使用 azure DevOps API 为 GitHub Enterprise 存储库创建 azure DevOps 管道作为源
- oracle - 使用数据泵导出时无法重新映射数据
- r - 用于 plogis 的基本 R 代码的 Tidyverse 版本?
- azure-sql-database - 具有加入域的 Web 服务器的 Azure 托管 SQL 实例
- html - 我如何让这个菜单在滚动过去时粘在顶部?
- reactjs - antd嵌套表中如何使用树形数据?
- python - 如何将带有名称值对的csv解析为带有冒号分隔的文本单元格
- python - 检查特定参数值是否作为 kwargs 传递的正确方法
- flutter - Flutter 中的三元运算符返回 List