我有几个这样的文件:
{
category:"rootCategory1";
subCategory: "subCategory1";
text: "some text";
}
{
category:"rootCategory1";
subCategory: "subCategory2";
text: "some text";
}
{
category:"rootCategory2";
subCategory: "subCategory3";
text: "some text";
}
{
category:"rootCategory2";
subCategory: "subCategory4";
text: "some text";
}
我是否可以像这样得到一份文件:
{
category:"rootCategory1";
subCategories:[
{
title:"subCategory1";
title:"subCategory2";
}
]
}
{
category:"rootCategory2";
subCategories:[
{
title:"subCategory3";
title:"subCategory4";
}
]
}
通过某种命令?
我已经尝试过查看mapReduce,但据我所知,它并不支持多个值。 我用它来为subCategories创建一个连接字符串,但我真的很想把负担放在数据库上,而不是我正在开发的webapp。
感谢。
**更新:
我在每个子类别下添加了一些标题,第一个答案给了我很多帮助,但现在,经过大量的尝试和失败,第一个答案给了我这个:
{
category:"someRootCategory",
subCategory:[
subCategory: "someSubCategory",
subCategory: "someOtherSubCategory"
]
title: "someTitle"
}
我的文件现在是这样的:
{
category:"rootCategory",
subCategory:"subCategory",
title:"title"
}
这使我无法确定哪个标题属于哪个子类别。我怎么做这样的事情:(它甚至可能吗?)
{
category:"rootCategory",
information:[
{
subCategory: "sub1",
titles:[{
title:"title1",
title:"title2"
}],
subCategory:"sub2",
titles:[{
title:"title3"
}]
]
}
由于
答案 0 :(得分:2)
这样的东西?
db.yourcollection.aggregate(
{ $group: {
_id:"$category",
subCategories: {$addToSet: "$subCategory"}
}
}
检查$addToSet运营商。
答案 1 :(得分:1)
通过大量的试验和错误,我得出了分裂一切的结论。
像这样:
rootCategories.json:
{
"rootCategory": "someRootCategory"
}
subCategories.json:
{
"subCategory": "someSubCategory",
"relation": <a rootCategory's ObjectId>
}
articles.json:
{
"title": "Some articletitle",
"text": "Some articletext",
"relation": <a subCategory's ObjectId>
}
通过这种方式,我可以将标题/文本分类到它们所属的子类别和rootcategory。
不知道这是否正确,但这似乎是解决问题的最佳方法。