2015-01-10 90 views

回答

1

mongodb v2.6你可以在聚合管道使用$text運營商。

var term = "searchTerm" 

var result = db.collection.aggregate([ 
{$match:{"$text":{$search:term}}}, 
{$group:{"_id":null,"count":{$sum:1}}} 
]).map(function(i){return {"count":i.count};}); 

result[0].count會給你匹配的文件數量。

如果你只是想要計數,那麼你可以使用count()函數。

db.collection.count({$text:{$search:term}}); 

您可以閱讀here更多有關如何使用各種查詢運營商,以及它如何票價使用它。

+0

我有數千萬條記錄,這個計數操作非常緩慢。任何解決方案 –

+0

@哈里 - 聚合怎麼樣?我編輯了總管道。請檢查它是如何執行的。 – BatScream

+0

5分鐘後仍然在加載,所以我放棄了。我的文字索引大約是11GB。有沒有解決這個問題的方法? –