Java: как ограничить результаты в монго
У меня есть этот запрос монго (Java):
TextQuery.queryText(textCriteria).sortByScore().limit(configuration.getSearchResultSize())
который выполняет текстовый поиск и сортировку по баллу. Я дал разный вид различным полям в документе, и теперь я хотел бы получить только те результаты со счетом ниже 10.
Есть ли способ добавить эти критерии в запрос?
это не сработало:
query.addCriteria(Criteria.where("score").lt(10));
если единственный способ использовать агрегацию - мне нужен пример mongoTemplate для этого.
другими словами
Как мне перевести следующую команду агрегирования оболочки Монго, в команду mongoTemplate Java Spring?? нигде не могу найти, как использовать API-интерфейс match () агрегата с компонентом поиска $text ($text индексируется в нескольких различных полях):
db.text.aggregate(
[
{ $match: { $text: { $search: "read" } } },
{ $project: { title: 1, score: { $meta: "textScore" } } },
{ $match: { score: { $lt: 10.0 } } }
]
)
Спасибо!
1 ответ
Пожалуйста, проверьте приведенный ниже пример кода, MongoDB поиск с кодом нумерации страниц в Java
BasicDBObject query = new BasicDBObject()
query.put(column_name, new BasicDBObject("$regex", searchString).append("$options", "i"));
DBCursor cursor = dbCollection.find(query);
cursor.skip((pageNum-1)*limit);
cursor.limit(limit);
Напишите цикл и вызовите приведенный выше код из цикла и передайте значения, например, pageNum, начинающиеся с 1 до n, и ограничение зависит от ваших требований. проверить курсор пуст или нет. Если пусто, пропустите цикл, если нет, продолжайте вызывать вышеуказанную базу кода.
Надеюсь, это будет полезно.