0

我有这个 mongo 查询(java):

TextQuery.queryText(textCriteria).sortByScore().limit(configuration.getSearchResultSize())

它执行文本搜索并按分数排序。我对文档中的不同字段给出了不同的 wiehgt,现在我只想检索分数低于 10 的结果。

有没有办法将该条件添加到查询中?

这没有用:

query.addCriteria(Criteria.where("score").lt(10));

如果唯一的方法是使用聚合 - 我需要一个 mongoTemplate 示例。

换句话说

如何将以下 mongo shell 聚合命令转换为 java spring 的 mongoTemplate 命令?在任何地方都找不到如何将聚合的 match() API 与 $text 搜索组件一起使用($text 在几个不同的字段上被索引):

db.text.aggregate(
   [
     { $match: { $text: { $search: "read" } } },
     { $project: { title: 1, score: { $meta: "textScore" } } },
     { $match: { score: { $lt: 10.0 } } }
   ]
)

谢谢!

4

1 回答 1

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 之类的值,限制取决于您的要求。检查光标是否为空。如果为空则跳过循环,如果不继续调用上述代码库。

希望这会有所帮助。

于 2016-06-01T09:05:14.943 回答