2015-04-25 66 views
0

大家好我有一個包含類似下面這樣一些信息的龐大的數據:MongoDB的查詢在數據庫中找到城市總數

{ "_id" : "01011", "city" : "CHESTER", "loc" : [ -72.988761, 42.279421 ], "pop" : 1688, "state" : "MA" } 
    { "_id" : "01012", "city" : "CHESTERFIELD", "loc" : [ -72.833309, 42.38167 ], "pop" : 177, "state" : "MA" } 
    { "_id" : "01013", "city" : "CHICOPEE", "loc" : [ -72.607962, 42.162046 ], "pop" : 23396, "state" : "MA" } 
    { "_id" : "01020", "city" : "CHICOPEE", "loc" : [ -72.576142, 42.176443 ], "pop" : 31495, "state" : "MA" } 

我希望能夠找到在這個數據庫中的城市數量使用Mongodb命令。而且數據庫可能有不止一個被記錄在同一個城市。如上例所示。

我想:

>db.zipcodes.distinct("city").count(); 
2015-04-25T15:57:45.446-0400 E QUERY warning: log line attempted (159k) over max size (10k), printing beginning and end ... TypeError: Object AGAWAM,BELCHERTOWN ***data*** has no method 'count' 

,但我做了這樣的事情我沒有me.Also工作:

>db.zipcodes.find({city:.*}).count(); 

    2015-04-25T16:00:01.043-0400 E QUERY SyntaxError: Unexpected token . 

但它也沒工作,即使不工作,它將統計冗餘數據(城市)。任何想法?

+0

什麼'沒有工作mean'。查詢失敗,你得到的數字是錯誤的。如果它錯了,爲什麼它是錯的。 –

+0

我得到的第一個:2015-04-25T15:57:45.446-0400 E QUERY警告:嘗試登錄線(159k)超過最大尺寸(10k),打印開始和結束... TypeError:****** ****城市一拳********沒有方法'數' –

+0

我得到的第二個人:2015-04-25T16:00:01.043-0400 E QUERY SyntaxError:意外的標記。 –

回答

2

而不是做

db.zipcodes.distinct("city").count(); 

這樣做的:

db.zipcodes.distinct("city").length; 

且有aggregate功能,它可以幫助你。

我還發現1 example聚合(與您的查詢相關)。

如果要添加條件,那麼你可以參考$gte/$gte (aggregation)和/或$lte/$lte (aggregation)

看,如果沒有什麼幫助。

+0

你是對的,它工作正常。謝謝。 –

+0

@SalehMakkawy不客氣。 –

+0

好的我想做的另一件事:列出馬薩諸塞州的人口在1000到2000之間的城市。 –

1

您也可以使用aggregation framework爲此。聚合流水線有兩個運算符階段;第一組由城市的文件,最後計算從以前的流總不同的文件:

db.collection.aggregate([ 
    { 
     "$group": { 
      "_id": "$city"    
     } 
    }, 
    { 
     "$group": { 
      "_id": 0, 
      "count": { "$sum": 1 } 
     } 
    } 
]); 

輸出

/* 1 */ 
{ 
    "result" : [ 
     { 
      "_id" : 0, 
      "count" : 3 
     } 
    ], 
    "ok" : 1 
} 
+0

這也很好,謝謝。我怎樣才能將標籤更改爲像城市數量:1645 <<作爲示例 –

+0

@SalehMakkawy你的意思是改變字段''計數''說''城市''? – chridam

+1

是的,我弄明白了。謝謝。我是MongoDB中的新成員。 –