在MongoDB里导入一组包含type、brand、colour、storage的数据后,如何列出每个brand生产的除colour为white以外的所有colour
时间: 2023-12-10 14:37:11 浏览: 61
mongoDb导入数据csv说明文档
可以使用MongoDB的聚合框架来实现这个功能。具体的聚合操作如下:
1. 使用 `$match` 筛选出 `colour` 不为 `white` 的文档。
```mongo
db.collection.aggregate([
{
$match: {
colour: { $ne: "white" }
}
}
])
```
2. 使用 `$group` 操作按 `brand` 字段进行分组,使用 `$addToSet` 操作收集每个 `brand` 生产的所有颜色。
```mongo
db.collection.aggregate([
{
$match: {
colour: { $ne: "white" }
}
},
{
$group: {
_id: "$brand",
colours: { $addToSet: "$colour" }
}
}
])
```
3. 最后,在 `$project` 中清理输出结果,只保留 `brand` 和 `colours` 字段。
```mongo
db.collection.aggregate([
{
$match: {
colour: { $ne: "white" }
}
},
{
$group: {
_id: "$brand",
colours: { $addToSet: "$colour" }
}
},
{
$project: {
_id: 0,
brand: "$_id",
colours: 1
}
}
])
```
这样就可以得到每个 `brand` 生产的除 `white` 以外的所有 `colour`。
阅读全文