2017-04-02 102 views
0

直接在數據庫中,我得到我的結果上使用此命令後MongoMapper - 全文檢索

db.products.find({$text: {$search: "some product"}}, {score: {$meta: "textScore"}}).sort({score:{$meta:"textScore"}}) 

但在MongoMapper我得到的錯誤使用它。 沒有得分字段的搜索不會產生任何錯誤

@products = Product.where(
    '$text' => {'$search' => @search_string} 
) 

然而,當我嘗試添加排序字段是從哪裏獲得的問題

@products = Product.where(
    '$text' => {'$search' => @search_string}, :score => {'$meta' => "textScore"} 
) 

蒙戈:: OperationFailure在/搜索未知運營商:$ meta

它也無法使用原始查詢方法

@products = MongoMapper.database['products'].find(
    '$text' => {'$search' => @search_string}, :score => {'$meta' => "textScore"} 
) 

我試圖運行完整查詢

@products = Product.where(
    '$text' => {'$search' => @search_string},:score => {'$meta' => "textScore"} 
).sort(:score => {'$meta' => "textScore"}).limit(5) 

這給了錯誤

蒙戈:: OperationFailure在/搜索必須有$元投影所有$元排序鍵

有沒有人有我的錯在哪裏的建議?我認爲我錯了。

安裝的版本。 mongo_mapper(0.14.0,0.13.1)

回答

0

在MongoMapper谷歌A組用戶指出我朝着正確的方向

@products = Product.where(
'$text' => {'$search' => @search_string}).fields(:score => {'$meta' => "textScore"})