javascript - 如何根据数组值过滤 MongoDB 数据?

标签 javascript angular typescript mongodb mean-stack

我的集合中有一个文档,其中包含数组中的值。

{
  "name": "ABC",
  "details": [
     {"color": "red", "price": 20000}, 
     {"color": "black", "price": 22000}, 
     {"color": "blue", "price": 21000}
  ]
},
{
  "name": "XYZ",
  "details": [
     {"color": "yellow", "price": 10000}, 
     {"color": "black", "price": 12000}, 
     {"color": "green", "price": 11000}
  ]
},
{
  "name": "CBD",
  "details": [
     {"color": "red", "price": 30000}, 
     {"color": "pink", "price": 32000}, 
     {"color": "blue", "price": 31000}
  ]
}

我想过滤红色和蓝色的数据,并且需要像这样的输出

{"name": "ABC", "color": "red", "price": 20000},
{"name": "ABC", "color": "blue", "price": 21000},
{"name": "CBD", "color": "red", "price": 30000},
{"name": "CBD", "color": "blue", "price": 31000}

对此的查询是什么...

我能得到

{
  "name": "ABC",
  "details": [
     {"color": "red", "price": 20000}, 
     {"color": "blue", "price": 21000}
  ]
},
{
  "name": "CBD",
  "details": [
     {"color": "red", "price": 30000}, 
     {"color": "blue", "price": 31000}
  ]
}

但我想要这样

{"name": "ABC", "color": "red", "price": 20000},
{"name": "ABC", "color": "blue", "price": 21000},
{"name": "CBD", "color": "red", "price": 30000},
{"name": "CBD", "color": "blue", "price": 31000}

让我知道 MongoDB 查询或 JS/TS 代码来简化数组对象...

最佳答案

您可以使用 flatMap 获取所需的格式化数据,如下所示:

const data = [
  {
    "name": "ABC",
    "details": [
       {"color": "red", "price": 20000}, 
       {"color": "blue", "price": 21000}
    ]
  },
  {
    "name": "CBD",
    "details": [
       {"color": "red", "price": 30000}, 
       {"color": "blue", "price": 31000}
    ]
  }
];

const result = data.flatMap(entry => entry.details.map(detail => ({name: entry.name, ...detail})));

console.log(result);

关于javascript - 如何根据数组值过滤 MongoDB 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76322459/

相关文章:

javascript - knockout : Trouble removing a newly added item

angular - Angular2 RC7 和 angular-cli webpack 中的延迟加载

angular - md-divider (mat-divider) 未显示在 Angular Material 2 中

angular - 从模板调用组件函数

typescript 从类型中排除类型

javascript - 图片从上传文件夹插入数据库

javascript - 堆分析的脚本代码有什么作用?

javascript - 为什么我的 Node 悬停弹出窗口在我的 vis.js 网络中不起作用?

javascript - ngFor 输入互相复制值

javascript - TypeScript 中是否有一个选项可以使编译后的 JavaScript 文件与 JSHint 兼容?