2013-04-05 28 views
0

我有第COLUMN1 &列2看起來像這樣如何讓MongoDB中的預測與組操作員

Colum1 Column2 
    A  1 
    A  2 
    A  3 
    B  2 
    B  4 
    B  6 

如果我執行下列SQL MySQL中的表

 SELECT Column1, Column2, count(*) from Table group by Column1; 

結果

Column1 Column2 Count(*) 
    A   1   3 
    B   2   3 

我想對MONGODB執行類似查詢

我試圖

QUERY1: db.table.aggregate({$group: {_id:"$Column1", count:{$sum:1}} }) 
QUERY2: db.table.aggregate({$project: {column1:1, column2:1}}, {$group: {_id:"$Column1", count:{$sum:1}} }) 

然而,對於QUERY2結果是一樣的Query1,好像你不能填充低於$組專欄中提到的其他領域。

有沒有一種方法可以用$ group運算符填充mongodb中的其他字段?

+0

文檔有一個,我相信這是你想要的東西例如:http:/ /docs.mongodb.org/manual/reference/sql-aggregation-comparison/ – WiredPrairie 2013-04-05 12:13:58

回答

1

我不確定我是否正確讀取了mysql查詢,但我不明白爲什麼這個特別有用,但$first似乎完成了同樣的事情。

但是,如$first documentation中所述,結果取決於排序,因此應該包含排序標準。

數據(簡稱爲簡潔列名)

> db.foo.insert({"C1" : "A", "C2" : 1}); 
> db.foo.insert({"C1" : "A", "C2" : 2}); 
> db.foo.insert({"C1" : "A", "C2" : 3}); 
> db.foo.insert({"C1" : "B", "C2" : 2}); 
> db.foo.insert({"C1" : "B", "C2" : 4}); 
> db.foo.insert({"C1" : "B", "C2" : 6}); 

聚集查詢

> db.foo.aggregate({$group: {_id:"$C1", C2: { $first: "$C2" }, count:{$sum:1}} }) 

結果

{ 
     "result" : [ 
       { 
         "_id" : "B", 
         "C2" : 2, 
         "count" : 3 
       }, 
       { 
         "_id" : "A", 
         "C2" : 1, 
         "count" : 3 
       } 
     ], 
     "ok" : 1 
} 
+0

MySQL的查詢是正確的,我的基礎設施有具有友好名稱的多臺服務器稱爲Server1,Server2 ....每臺服務器都有多個主機名和多個IP,現在我寫的MySQL查詢向我提供服務器友好名稱,連接到它的IP數量和一對IP地址和主機名以訪問那臺服務器。感謝您的回覆,我會在Mongo中嘗試。讚賞的幫助。 – user2248531 2013-04-08 09:38:29