我正在重新使用我最初使用MongoDB的旧项目。在此项目中,我的模型定义为:
var ItemSchema = new mongoose.Schema({
name: {type: String},
category: {type: String},
subcategory: {type: String},
status: {type: String},
description: {type: String},
value: {type: Number, default: 1}
});
Items
集合包含数百种这种格式的文档。
现在,我正在尝试返回一个独立Category
的列表,其中嵌套了所有相关的独立Subcategory
。所需的输出将类似于:
{
"CategoryName1": [
"SubcategoryName",
"SubcategoryName",
"SubcategoryName",
...
],
"CategoryName2": [
"SubcategoryName",
"SubcategoryName",
"SubcategoryName",
...
]
}
使用我当前的模型,并且为每个项目列出多个类别和子类别,是否可以进行这种类型的查询?还是需要对数据进行重组?由于这是我的第一次尝试,因此我不反对重新格式化数据。
答案 0 :(得分:1)
通过使用以下内容来完成这项工作:
db.items.aggregate(
[
{ $group : { _id : "$category", subcategory: { $addToSet: "$subcategory" } } }
]
);