我正在使用 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 之后,当您有如上所述的复杂模式时,我对如何(快速)执行此操作感到非常困惑。如果我正确理解了其他出色的文档,则可以使用聚合框架或 map/reduce 框架来实现此类操作,但这是我需要一些输入的地方:
- 考虑到结构的复杂性,哪个框架更适合实现我正在寻找的结果?
- 为了从所选框架中获得最佳性能,首选哪种索引?