在MongoDB里导入一组包含type、brand、colour、storage的数据后,如何列出除colour为black外所有可用于type为Phone的colour
时间: 2023-12-06 16:45:33 浏览: 35
可以使用以下MongoDB查询语句来实现:
```
db.collection.find({
"type": "Phone",
"colour": { "$ne": "black" }
}, {
"_id": 0,
"colour": 1
})
```
这条查询语句会返回所有`type`为`Phone`且`colour`不等于`black`的文档,同时只会返回文档中的`colour`字段。`_id`字段被排除在结果之外,因为我们在查询中将其设置为0。
如果你想要返回其他字段,只需要在第二个参数中添加相应的字段即可。
相关问题
在MongoDB里导入一组包含type、brand、colour、storage的数据后,如何列出每种type的所有colour和storage
你可以使用 MongoDB 的聚合框架来实现这个需求。具体步骤如下:
1. 使用 `$group` 操作符按照 `type` 字段进行分组,将每个 `type` 对应的所有文档合并到一个数组中。
2. 使用 `$project` 操作符选择需要的字段,即 `colour` 和 `storage`。
3. 最后使用 `$sort` 操作符对结果进行排序。
下面是一个示例聚合查询:
```
db.collection.aggregate([
{
$group: {
_id: "$type",
colours: { $addToSet: "$colour" },
storages: { $addToSet: "$storage" }
}
},
{
$project: {
_id: 0,
type: "$_id",
colours: 1,
storages: 1
}
},
{
$sort: {
type: 1
}
}
])
```
这个查询将按照 `type` 字段进行分组,对于每个 `type`,使用 `$addToSet` 操作符将对应的所有 `colour` 和 `storage` 值添加到一个数组中。最后使用 `$project` 操作符选择需要的字段,并使用 `$sort` 操作符按照 `type` 进行排序。
在MongoDB里导入一组包含type、brand、colour、storage的数据后,如何列出每个brand生产的除colour为white以外的所有colour
可以使用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`。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)