0
我有以下架構複雜的位置數據庫:MySQL中的MongoDB和查詢相當於該模式
table States
id : INT PK AutoIncrement
name : VarChar 50 UNIQUE
table Counties
id: INT PK AutoIncrement
stateID : INT ForeignKey ->States(id)
name : VARCHAR(50)
table Towns :
id: INT PK AutoIncrement
stateID : INT ForeignKey ->States(id)
countyID : INT ForeignKey ->Counties(id)
name : VARCHAR(50)
table listings
id : INT PK autoincrement
name: varchar(50)
stateID: INT
countyID: INT
townID: INT
當我想以樹的形式是這樣來顯示地理分配的一些統計數據:
- STATE1(105個結果)
- 縣1(50個結果)
- 縣2(55個結果)
- 鎮1(20個結果)_
- 鎮2(35個結果)
- STATE2(200個結果) 等...
在MySQL我將有做過這樣的查詢:
**第一級:**
select count(*) as nb, S.namem, S.id as stateID from listings L INNER JOIN States S ON S.id=L.stateID GROUP BY S.id;
** 2D級別:**
foreach(results as $result){
$sql = "select count(*) as nb, from listings L INNER JOIN Counties C ON C.id=L.countyID WHERE L.stateID=".$result['stateID'];
});
等等......有一種方法做,在MySQL中的獨特的長查詢過。
這是一個普通的查詢,它在Mysql的SSD磁盤上非常快。
我開始學習mongoDB,我想知道我應該使用什麼樣的模式來存儲我的位置數據來優化這個$ count()和$ group()操作。
哪個mongo查詢可以完成這項工作?
尼斯〜只是爲了確認,如果我有10個州的列表,我要顯示與計數的每個狀態的樹,一個國家「我的樹展開了,我將不得不做2個查詢。一個按州計算,另一個計算展開的樹,按縣分組。 我還會使用整數來計數/分組數據,因爲它比文本匹配更快。 – Ant 2014-09-26 03:35:46
取決於客戶端處理的方法/數量。如果您執行客戶端掃描並在結果中進行求和,您可以從一個查詢中獲取樹的所有更高級別以獲取最低級別的計數。 – wdberkeley 2014-09-26 15:56:48