【发布时间】:2017-04-02 05:23:44
【问题描述】:
直接在数据库上使用这个命令我得到了我想要的结果
db.products.find({$text: {$search: "some product"}}, {score: {$meta: "textScore"}}).sort({score:{$meta:"textScore"}})
但在 MongoMapper 中使用它时出现错误。 没有 score 字段的搜索不会产生任何错误
@products = Product.where(
'$text' => {'$search' => @search_string}
)
但是,当我尝试添加排序字段时,我会遇到问题
@products = Product.where(
'$text' => {'$search' => @search_string}, :score => {'$meta' => "textScore"}
)
Mongo::OperationFailure at /search 未知操作符:$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)
这给出了错误
/search 处的 Mongo::OperationFailure 必须有所有 $meta 排序键的 $meta 投影
有人对我哪里出错有建议吗?我假设我用错了。
已安装的版本。 mongo_mapper (0.14.0, 0.13.1)
【问题讨论】:
标签: ruby mongodb mongomapper