- 64
- 0
数据结构
{
"_id" : ObjectId("59e72a88d416aa6ab8f79d7b"),
"category_name" : "油",
"parent_id" : "0",
"__v" : 0
}
/* 2 */
{
"_id" : ObjectId("59e72acad416aa6ab8f79d7c"),
"category_name" : "肉类",
"parent_id" : "0",
"__v" : 0
}
/* 3 */
{
"_id" : ObjectId("59e85b76813a3011280b1186"),
"category_name" : "芝麻肉",
"parent_id" : "59e72acad416aa6ab8f79d7c",
"__v" : 0
}
/* 4 */
{
"_id" : ObjectId("59e85b84813a3011280b1187"),
"category_name" : "猪肉",
"parent_id" : "59e72acad416aa6ab8f79d7c",
"__v" : 0
}
/* 5 */
{
"_id" : ObjectId("5a15027971d44b046f83d605"),
"category_name" : "牛肉油",
"parent_id" : "59e72a88d416aa6ab8f79d7b",
"__v" : 0
}
/* 6 */
{
"_id" : ObjectId("5a1502d871d44b046f83d606"),
"category_name" : "花生油",
"parent_id" : "59e72a88d416aa6ab8f79d7b",
"__v" : 0
}
/* 7 */
{
"_id" : ObjectId("5a154dd83af2940ba6727a39"),
"category_name" : "豆油",
"parent_id" : "59e72a88d416aa6ab8f79d7b",
"__v" : 0
}
这是我的查询代码;结果达不到,适合用组合函数查吗。还是哪不对了
db.getCollection('categoties').group({
keyf:function(doc){
if(doc.parent_id==0){
return {id:doc._id,name:doc.category_name}
}else{
return {id:doc.parent_id}
}
},
reduce:function(obj,prev){
if(obj.parent_id!=0){
prev.items.push(obj);
}
},
initial:{items:[]}
})
#结果如下:
[
{
"id" : ObjectId("59e72a88d416aa6ab8f79d7b"),
"name" : "油",
"items" : []
},
{
"id" : ObjectId("59e72acad416aa6ab8f79d7c"),
"name" : "肉类",
"items" : []
},
{
"id" : "59e72acad416aa6ab8f79d7c",
"items" : [
{
"_id" : ObjectId("59e85b76813a3011280b1186"),
"category_name" : "芝麻肉",
"parent_id" : "59e72acad416aa6ab8f79d7c",
"__v" : 0
},
{
"_id" : ObjectId("59e85b84813a3011280b1187"),
"category_name" : "猪肉",
"parent_id" : "59e72acad416aa6ab8f79d7c",
"__v" : 0
}
]
},
{
"id" : "59e72a88d416aa6ab8f79d7b",
"items" : [
{
"_id" : ObjectId("5a15027971d44b046f83d605"),
"category_name" : "牛肉油",
"parent_id" : "59e72a88d416aa6ab8f79d7b",
"__v" : 0
},
{
"_id" : ObjectId("5a1502d871d44b046f83d606"),
"category_name" : "花生油",
"parent_id" : "59e72a88d416aa6ab8f79d7b",
"__v" : 0
},
{
"_id" : ObjectId("5a154dd83af2940ba6727a39"),
"category_name" : "豆油",
"parent_id" : "59e72a88d416aa6ab8f79d7b",
"__v" : 0
}
]
}
]
我想要的结果是这样的:
[
{
"id" : ObjectId("59e72a88d416aa6ab8f79d7b"),
"name" : "油",
"items" : [
{
"_id" : ObjectId("5a15027971d44b046f83d605"),
"category_name" : "牛肉油",
"parent_id" : "59e72a88d416aa6ab8f79d7b",
"__v" : 0
},
{
"_id" : ObjectId("5a1502d871d44b046f83d606"),
"category_name" : "花生油",
"parent_id" : "59e72a88d416aa6ab8f79d7b",
"__v" : 0
},
{
"_id" : ObjectId("5a154dd83af2940ba6727a39"),
"category_name" : "豆油",
"parent_id" : "59e72a88d416aa6ab8f79d7b",
"__v" : 0
}
]
},
{
"id" : ObjectId("59e72acad416aa6ab8f79d7c"),
"name" : "肉类",
"items" : [
{
"_id" : ObjectId("59e85b76813a3011280b1186"),
"category_name" : "芝麻肉",
"parent_id" : "59e72acad416aa6ab8f79d7c",
"__v" : 0
},
{
"_id" : ObjectId("59e85b84813a3011280b1187"),
"category_name" : "猪肉",
"parent_id" : "59e72acad416aa6ab8f79d7c",
"__v" : 0
}
]
}
] 0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
-︵攒一口袋星星☆ 普通会员 1楼
MongoDB 是一个高性能的开源文档数据库,它支持丰富的查询语法,可以帮助您更有效地查找和管理数据。以下是MongoDB 查询的基本概念和一些常见查询类型:
- 查询的基本概念:
- 索引:在 MongoDB 中,索引是一种特殊的文档数据结构,可以帮助您快速查找数据。索引可以按值、文档类型、哈希值等进行分类。创建索引可以帮助您减少查询时间。
- 分组查询:您可以根据文档的某个字段将数据分组。这可以帮助您按特定字段进行聚合计算。
- 查询聚合:聚合查询允许您对文档进行聚合计算,例如计算文档的总和、平均值、计数等。
- 查询范围:您可以根据文档的某个字段设置查询范围。这可以帮助您找到文档中符合特定条件的数据。
-
查询过滤:过滤查询允许您根据文档的某个字段设置过滤条件。这可以帮助您找到文档中符合特定条件的数据。
-
常见查询类型:
- 单文档查询:用于查找单个文档。
- 集合查询:用于查找多个文档组成的集合。
- 聚合查询:用于对集合中的文档进行聚合计算。
- 查询范围:用于根据文档的某个字段设置查询范围。
- 查询过滤:用于根据文档的某个字段设置过滤条件。
以上是MongoDB 查询的一些基本概念和一些常见查询类型。希望这些信息对您有所帮助。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
