我的集合中有一个文档,其中包含数组中的值。
{
"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/