如何以数组格式检索数据 mongoDb Spring Boot
How to retrive data in array format mongoDb SpringBoot
我的 mongoDB 中有如下数据
{
"stack":"webTechnology",
"subStack":"angular"
},
{
"stack":"webTechnology",
"subStack":"react"
}.
{
"stack":"webTechnology",
"subStack":"angular"
},
{
"stack":"script",
"subStack":"python"
},
{
"stack":"script",
"subStack":"javaScript"
},
{
"stack":"Java",
"subStack":"Spring"
}
我需要 return 这些数据作为来自 Rest API 的响应,格式如下,
按堆栈和子堆栈分类
[
"webTechnology":[
"angular":[
{
"stack":"webTechnology",
"subStack":"angular"
},
{
"stack":"webTechnology",
"subStack":"angular"
}
],
"react":[
{
"stack":"webTechnology",
"subStack":"react"
}
]
],
"script":[
"python":[
{
"stack":"script",
"subStack":"python"
}
],
"javaScript":[
{
"stack":"script",
"subStack":"javaScript"
}
]
],
"java":[
"spring":[
{
"stack":"java",
"subStack":"spring"
}
]
]
]
我正在使用 mongoTemplate 检索数据,return以列表格式
mongoTemplate.getCollection(collectionName).find().toArray()
如何才能得到我期望的结果?
我将您的数据插入临时集合 dataCollection
,这里是按 stack
和 substack
分组数据的查询:
db.getCollection('dataCollection').aggregate([
{
$group: {
_id: {stack: "$stack", subStack: "$subStack"},
result: { $push : "$$ROOT" }
}
}
])
将查询转换为 mongotemplate 格式应该不难;如果您有任何问题,请告诉我。
输出:
/* 1 */
{
"_id" : {
"stack" : "Java",
"subStack" : "Spring"
},
"result" : [
{
"_id" : ObjectId("5aaf5b65f2046e3bf671328a"),
"stack" : "Java",
"subStack" : "Spring"
}
]
}
/* 2 */
{
"_id" : {
"stack" : "webTechnology",
"subStack" : "angular"
},
"result" : [
{
"_id" : ObjectId("5aaf5b65f2046e3bf6713285"),
"stack" : "webTechnology",
"subStack" : "angular"
},
{
"_id" : ObjectId("5aaf5b65f2046e3bf6713287"),
"stack" : "webTechnology",
"subStack" : "angular"
}
]
}
/* 3 */
{
"_id" : {
"stack" : "script",
"subStack" : "python"
},
"result" : [
{
"_id" : ObjectId("5aaf5b65f2046e3bf6713288"),
"stack" : "script",
"subStack" : "python"
}
]
}
/* 4 */
{
"_id" : {
"stack" : "webTechnology",
"subStack" : "react"
},
"result" : [
{
"_id" : ObjectId("5aaf5b65f2046e3bf6713286"),
"stack" : "webTechnology",
"subStack" : "react"
}
]
}
/* 5 */
{
"_id" : {
"stack" : "script",
"subStack" : "javaScript"
},
"result" : [
{
"_id" : ObjectId("5aaf5b65f2046e3bf6713289"),
"stack" : "script",
"subStack" : "javaScript"
}
]
}
我的 mongoDB 中有如下数据
{
"stack":"webTechnology",
"subStack":"angular"
},
{
"stack":"webTechnology",
"subStack":"react"
}.
{
"stack":"webTechnology",
"subStack":"angular"
},
{
"stack":"script",
"subStack":"python"
},
{
"stack":"script",
"subStack":"javaScript"
},
{
"stack":"Java",
"subStack":"Spring"
}
我需要 return 这些数据作为来自 Rest API 的响应,格式如下, 按堆栈和子堆栈分类
[
"webTechnology":[
"angular":[
{
"stack":"webTechnology",
"subStack":"angular"
},
{
"stack":"webTechnology",
"subStack":"angular"
}
],
"react":[
{
"stack":"webTechnology",
"subStack":"react"
}
]
],
"script":[
"python":[
{
"stack":"script",
"subStack":"python"
}
],
"javaScript":[
{
"stack":"script",
"subStack":"javaScript"
}
]
],
"java":[
"spring":[
{
"stack":"java",
"subStack":"spring"
}
]
]
]
我正在使用 mongoTemplate 检索数据,return以列表格式
mongoTemplate.getCollection(collectionName).find().toArray()
如何才能得到我期望的结果?
我将您的数据插入临时集合 dataCollection
,这里是按 stack
和 substack
分组数据的查询:
db.getCollection('dataCollection').aggregate([
{
$group: {
_id: {stack: "$stack", subStack: "$subStack"},
result: { $push : "$$ROOT" }
}
}
])
将查询转换为 mongotemplate 格式应该不难;如果您有任何问题,请告诉我。
输出:
/* 1 */
{
"_id" : {
"stack" : "Java",
"subStack" : "Spring"
},
"result" : [
{
"_id" : ObjectId("5aaf5b65f2046e3bf671328a"),
"stack" : "Java",
"subStack" : "Spring"
}
]
}
/* 2 */
{
"_id" : {
"stack" : "webTechnology",
"subStack" : "angular"
},
"result" : [
{
"_id" : ObjectId("5aaf5b65f2046e3bf6713285"),
"stack" : "webTechnology",
"subStack" : "angular"
},
{
"_id" : ObjectId("5aaf5b65f2046e3bf6713287"),
"stack" : "webTechnology",
"subStack" : "angular"
}
]
}
/* 3 */
{
"_id" : {
"stack" : "script",
"subStack" : "python"
},
"result" : [
{
"_id" : ObjectId("5aaf5b65f2046e3bf6713288"),
"stack" : "script",
"subStack" : "python"
}
]
}
/* 4 */
{
"_id" : {
"stack" : "webTechnology",
"subStack" : "react"
},
"result" : [
{
"_id" : ObjectId("5aaf5b65f2046e3bf6713286"),
"stack" : "webTechnology",
"subStack" : "react"
}
]
}
/* 5 */
{
"_id" : {
"stack" : "script",
"subStack" : "javaScript"
},
"result" : [
{
"_id" : ObjectId("5aaf5b65f2046e3bf6713289"),
"stack" : "script",
"subStack" : "javaScript"
}
]
}