Spring-data имеет встроенную поддержку текстового поиска.
Я использовал следующие зависимости:
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>1.8.2.RELEASE</version>
</dependency>
Try следующий синтаксис:
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();
конвертировать этот dbobjects
в вашем klass
, как показано ниже:
for(DBObject dbObject : dbObjects) {
mongoTemplate.getConverter().read(klass, dbObject);
}
спасибо, вы знаете, как сделать это с помощью агрегации? – shemerk
Спасибо! не смог найти этот пример в любом месте в Интернете! – shemerk