2016-12-12 14 views
0

我有一個MongoDB的集合與文件看起來像這樣:沒有SQL數據庫的連接和分組

{ 
    "_id" : ObjectId("583f6e6d14c8042dd7c153f1"), 
    "transid" : 1, 
    "acct" : "acct1", 
    "transdate" : ISODate("2012-01-31T05:00:00.000Z"), 
    "category" : "Fees", 
    "amount" : 103 
} 

在我的應用我想從一組列表中顯示用戶的所有可用類別的清單,並給他們添加新類別的選項。這些會顯示在下拉菜單中。我的問題是如何存儲不同的類別列表,因爲它們可能實際上並未分配給事務。

我應該有一個類別集合來填充我的下拉列表嗎?

另外,當我拉我的所有類別的交易清單,我怎麼也包括沒有任何交易的類別?

回答

0

您可以將它們放在不同的集合中,然後在這種情況下,您需要觸發一個彙總的$查找查詢來從兩個不同的集合中獲取數據。請參閱here.

另一種選擇是要保持它在同一集合中不具有其他細節,如

{ 
    "_id" : ObjectId("583f6e6d14c8042dd7c153e1"), 
    "transdate" : ISODate("2012-01-31T05:00:00.000Z"), 
    "category" : "Fees" 
} 

然後獲取類別,你可以觸發一個不同的查詢關鍵詞,比如

db.runCommand ({distinct:「collectionName」,key:「category」})

我喜歡用第二種方法。第一個是傳統的RDBMS方法,需要維護兩個集合並執行一個昂貴的查找。 這種情況似乎並不需要額外的開銷,但選擇只是你的。