首页 > 解决方案 > MongoDB 排序与文本搜索的分数以及其他标准弹簧数据

问题描述

我有电子商务产品的 mongo 文档。我想根据搜索分数进行排序。我在 find 子句中还有其他参数。我的查询是:

db.getCollection('product').find({category_id:42, $text: 
{$search:'red'}},{'score': {'$meta': 'textScore'}}).sort({'score': {'$meta': 'textScore'}}).limit(50)

如何在春季数据中执行相同的操作?

我使用了查询和标准,但无法根据分数进行排序:

Query query = new Query();
query.addCriteria(Criteria.where("category_id").is(42));
 query.addCriteria(TextCriteria.forDefaultLanguage().
 matching("red"));

mongoTemplate.find(query, A.class, "product");

但是这里没有使用分数排序的选项。如何根据分数排序?

标签: mongodbmongodb-queryspring-dataspring-data-mongodb

解决方案


请查看参考文档并使用 aTextQuery按分数排序。

TextQuery query = new TextQuery(TextCriteria.forDefaultLanguage().matching("red"));
query.addCriteria(Criteria.where("category_id").is(42));
query.sortByScore();

我创建了DATAMONGO-2407以通过使排序选项更加可见来改进文档。


推荐阅读