Mongodb聚合,如何合并或合并字段,然后计数

Mongodb聚合,如何合并或合并字段,然后计数,mongodb,aggregation-framework,pymongo,Mongodb,Aggregation Framework,Pymongo,我在集合中有属性(主页)数据。每个家庭可以有多个所有者,并作为单独的字段存储,例如{home:1,owner1:Fred,owner2:Jason,owner3:Stan}我想获得前X名所有者的名单。作为mongodb的新手,我能够使用一个基本示例来聚合和计算一个字段(owner1),但我不知道如何组合owner1、owner2、owner3中的名称,然后进行计算 我现在用的是pymongo x = data2009.aggregate([ { "$group": { "_id": "$

我在集合中有属性(
主页
)数据。每个家庭可以有多个所有者,并作为单独的字段存储,例如
{home:1,owner1:Fred,owner2:Jason,owner3:Stan}
我想获得前X名所有者的名单。作为mongodb的新手,我能够使用一个基本示例来聚合和计算一个字段(
owner1
),但我不知道如何组合owner1、owner2、owner3中的名称,然后进行计算

我现在用的是pymongo

x = data2009.aggregate([
    { "$group": { "_id": "$OWNER1", "value": { "$sum": 1 } } },
    { "$sort": { "value": -1 } },
    { "$limit": 50 }
])
例如: 资料

产出将是

{
{_id: Stan, value: 4}
{_id: Fred, value: 3}
{_id: Jason, value: 1}
{_id: Tim, value: 1}
}

据我所知,使用聚合框架还不可能将多个字段重塑为一个数组值(可以将一个元素转换为一个包含一个元素的数组,但没有用处)。下面的新功能解决了这个缺点,请投票支持它-“$array aggregation expression”-

我不确定这是否可行。你应该考虑修改你的模式来使用<代码>所有者>代码>数组。@ JNYNHK:我可以这样做,我刚从CSV文件中导入它。我想我应该在导入时创建一个数组。我仍然想知道这是否可行。
{
{_id: Stan, value: 4}
{_id: Fred, value: 3}
{_id: Jason, value: 1}
{_id: Tim, value: 1}
}