2012-06-29 221 views
0

我有我的蒙戈組查詢的問題:(這是PHP代碼)蒙戈組查詢 - 篩選結果

$conditions = array(
       'user' => array(
         '$ne' => $uid 
       ) 
      ); 

      $group = $db->words->group(
       array("word" => true), 
       array("count" => 0), 
       "function(obj, prev) { prev.count += 1 }", 
       $conditions 
      ); 

想象一下詞集合下列文件

{ 
_id: 3, 
word: "hello", 
user: "test" 
} 
{ 
_id: 2, 
word: "world", 
user: "" 
} 
{ 
_id: 1, 
word: "test", 
user: "" 
} 

我需要從該組命令返回信息:

{ 
    word: "world", 
    count: 1 
    } 

我需要的只是有沒有用戶關聯的話d在任何文件中。目前我得到:

{ 
    word: "test", 
    count: 2 
    } 
{ 
    word: "world", 
    count: 1 
    } 

這是否有意義?我還是先從蒙戈...

感謝

回答

1

我不認爲你可以直接在組內過濾計數()。

您需要將其過濾出客戶端。我懷疑這是多少你想要的,因爲你會希望以某種方式來計數(我知道我會)。所以是的,你需要通過每個文件去計數字段。

相信聚合框架將與此更好:

http://docs.mongodb.org/manual/reference/aggregation/#_S_group

你可以使用它作爲一個管道,然後$排序或任何之後更換另一個管道領域。

希望這會有所幫助,