java - 如何在 mongo-spring 聚合中使用文本搜索

标签 java spring spring-mongo fulltext-index

如何将简单的 mongo shell $match 短语翻译为等效的 在Java中的mongo-spring中-使用聚合?

$match: { $text: { $search: "read" } } 

最佳答案

Spring-data 内置了对文本搜索的支持。

我使用了以下依赖项:

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-mongodb</artifactId>
    <version>1.8.2.RELEASE</version>
</dependency>

尝试以下语法:

TextCriteria criteria = TextCriteria.forDefaultLanguage().matchingAny("read");

Query query = TextQuery.queryText(criteria);    

List<klass> list = mongoTemplate.find(query, klass, "collection_name");

更多详情请参阅this .

要在聚合中执行相同的操作,请使用以下语法:

BasicDBObject match = new BasicDBObject("$match", 
                new BasicDBObject("$text", new BasicDBObject("$search", "COST")));

List<DBObject> aggregationList = new ArrayList<DBObject>();
aggregationList.add(match);

AggregationOutput aggregationOutput = mongoTemplate.getCollection("categoryMaster")
        .aggregate(aggregationList);

List<DBObject> dbObjects = (List<DBObject>) aggregationOutput.results();

在您的klass中转换此dbobjects,如下所示:

for(DBObject dbObject : dbObjects) {
    mongoTemplate.getConverter().read(klass, dbObject);
}

关于java - 如何在 mongo-spring 聚合中使用文本搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34919151/

相关文章:

java - 用于集合隐式转换的 Scala 类型变体

angularjs - Spring Boot GUI 测试 Selenium WebDriver

java - 通过 spring 初始化一个集合

mongodb - Spring mongodb在保存后获取插入项的ID

java - Spring 不使用 mongo 自定义转换器

java - 配置elasticsearch监听0.0.0.0 :9200 (IPV4)

java - Android 中的 AsyncTask、线程

java - 测试用例 : Mocking Database using Spring beans

spring - 如何在 mongodb 存储库中使用 @query 添加 orderby

java - Non-Presenter 类上的 GWTP EventBus