簡體   English   中英

Mongodb聚合,如何合並或合並字段然后計數

[英]Mongodb aggregation, how to combine or merge fields then count

我在集合中有property( home )數據。 每個房屋可以有多個所有者,並且存儲為單獨的字段,例如{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 }
])

例如:DATA

{_id:1, home: 1, OWNER1: "Fred", OWNER2: "Stan", OWNER2: ""}
{_id:2, home: 2, OWNER1: "Jason", OWNER2: "Fred", OWNER2: "Stan"}
{_id:3, home: 3, OWNER1: "Fred", OWNER2: "Tim", OWNER2: "Stan"}
{_id:4, home: 4, OWNER1: "Stan", OWNER2: "", OWNER2: ""}

輸出將是

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

據我所知,使用聚合框架尚無法將多個字段重塑為數組值(可以將一個元素轉換為包含一個元素的數組,但沒有用)。 以下新功能解決了該缺點,請對其進行投票-“ $ array聚合表達式” -https://jira.mongodb.org/browse/SERVER-8141

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM