我正在使用mongodb作为后端实现一个小应用程序。在这个应用程序中,我的数据结构将包含一个字段,其中文档将包含一个子文档数组。
我使用以下用例作为基础: http://docs.mongodb.org/manual/use-cases/inventory-management/ 正如您从示例中看到的那样,每个文档都有一个名为carted的字段,它是一个子文档数组。
这很适合我,除了一个问题: 我想在整个集合中计算每个唯一项目(以“sku”作为唯一标识符键),其中每个文档将计数加1(同一文档中的多个相同“sku”实例仍然只计数1)。例如,我希望得到以下结果:
{ sku: '00e8da9b', doc_count: 1 }, { sku: '0ab42f88', doc_count: 9 }
阅读了MongoDB的相关资料后,我对如何在具有上述复杂结构的情况下快速完成此操作感到困惑。如果我正确理解了非常好的文档,那么可能可以使用聚合框架或映射/减少框架来实现此操作,但这就是我需要一些输入的地方:
- 鉴于结构的复杂性,哪种框架更适合实现我正在寻找的结果? - 为了从所选框架中获得最佳性能,应该选择什么样的索引?
我使用以下用例作为基础: http://docs.mongodb.org/manual/use-cases/inventory-management/ 正如您从示例中看到的那样,每个文档都有一个名为carted的字段,它是一个子文档数组。
{
_id: 42,
last_modified: ISODate("2012-03-09T20:55:36Z"),
status: 'active',
items: [
{ sku: '00e8da9b', qty: 1, item_details: {...} },
{ sku: '0ab42f88', qty: 4, item_details: {...} }
]
}
这很适合我,除了一个问题: 我想在整个集合中计算每个唯一项目(以“sku”作为唯一标识符键),其中每个文档将计数加1(同一文档中的多个相同“sku”实例仍然只计数1)。例如,我希望得到以下结果:
{ sku: '00e8da9b', doc_count: 1 }, { sku: '0ab42f88', doc_count: 9 }
阅读了MongoDB的相关资料后,我对如何在具有上述复杂结构的情况下快速完成此操作感到困惑。如果我正确理解了非常好的文档,那么可能可以使用聚合框架或映射/减少框架来实现此操作,但这就是我需要一些输入的地方:
- 鉴于结构的复杂性,哪种框架更适合实现我正在寻找的结果? - 为了从所选框架中获得最佳性能,应该选择什么样的索引?