arrays - 如何在MongoDB中以数组形式返回某些字段?
问题描述
我有 Mongodb 数据库中的书籍列表。我想返回它的author
, brand
,type
inarray
或Any Structure
which 我可以在我的前端使用它React
来创建Filter
游乐场(我试过):https ://mongoplayground.net/p/eVane4iBN_j
数据库结构:
[
{
"_id": "1",
"title": "Lorem ipsum dolor sit",
"brand": "Apple",
"type": "Comedy",
"author": "Mark",
"price": 535
},
{
"_id": "2",
"title": "Lorem ipsum dolor sit",
"brand": "Mango",
"type": "Horror",
"author": "David",
"price": 695
},
{
"_id": "3",
"title": "Lorem ipsum dolor sit",
"brand": "Orange",
"type": "Horror",
"author": "Carl",
"price": 695
},
{
"_id": "4",
"title": "Lorem ipsum dolor sit",
"brand": "Mango",
"type": "Horror",
"author": "Carl",
"price": 69
},
{
"_id": "5",
"title": "Lorem ipsum dolor sit",
"brand": "Orange",
"type": "Drama",
"author": "David",
"price": 695
}
]
期望的输出:
{
"brand" : ["Apple","Mango","Orange"],
"type" : ["Horror","Drama","Comedy"],
"author" : ["David","Mark","Carl"]
}
我尝试使用$project
to return only brand
,type
并且author
我应该使用哪个 Aggregation 框架来制作这个?我真的需要你们的帮助,请帮帮我...
解决方案
您可以使用$group
和$addToSet
$group
什么都不使用,_id
因为您可以获得任何东西并$addToSet
避免重复。
db.collection.aggregate([
{
"$group": {
"_id": "",
"brand": {
"$addToSet": "$brand"
},
"type": {
"$addToSet": "$type"
},
"author": {
"$addToSet": "$author"
}
}
}
])
这里的例子
推荐阅读
- kotlin - 在打开的 BottomSheet 前面打开另一个 BottomSheet
- javascript - MongoDB User.findOne({email:email})
- c - fp16 到 fp32 转换的严格别名错误
- image - Ghostscript - pdf 到图像,但缩放到 10% 大小,分辨率 260ppi(缩略图创建)
- java - 在 Firebase 数据库的情况下,变量名称如何转换为文本以创建子节点?
- sql - 自加入帮助,只有一张表可以使用
- java - 休息客户端和肥皂客户端的相同实体
- laravel - Laravel Dusk 和 Select2
- swift - 如何使用条件设置 SwiftUI 日历默认日期?
- docker - 无法将图像推送到私有注册表:获取 x509:证书对 ingress.local 有效,而不是 registry.local