将mongo search从runCommand升级为使用Java驱动程序查找
我正在使用Java驱动程序运行一些mongo文本搜索。 我前面代码的一个示例是(其中值是传入的字符串): 然后我把“结果”循环一遍,每一个结果的得分都是将mongo search从runCommand升级为使用Java驱动程序查找,java,mongodb,Java,Mongodb,我正在使用Java驱动程序运行一些mongo文本搜索。 我前面代码的一个示例是(其中值是传入的字符串): 然后我把“结果”循环一遍,每一个结果的得分都是 // Get the number ii BasicDBObject element = (BasicDBObject) results.get(ii); // Now get the score double score = (double) element.get("score"); 我想升级到使用find,因为这似乎是2.6版和更高版本
// Get the number ii
BasicDBObject element = (BasicDBObject) results.get(ii);
// Now get the score
double score = (double) element.get("score");
我想升级到使用find,因为这似乎是2.6版和更高版本更喜欢的方式。到目前为止,我已经:
DBCollection coll = db.getCollection("testCollection");
BasicDBObject query = new BasicDBObject();
query.append("$text", new BasicDBObject("$search", value));
DBCursor cursor = coll.find(query);
然而,我不知道如何获得分数。
我试过这样做:
追加(“score”,新的BasicDBObject(“$meta”,“textScore”)
但这是行不通的。我想能够得到的名称和分数,这样我就可以插入到一个新的集合,也将保存分数他们
我可以通过以下方式轻松获得名称:
while (cursor.hasNext())
{
DBObject next = cursor.next();
String name = next.get("name").toString();
}
但是我如何获得分数呢?我发现了这个有趣的页面: 看来find可以获取第二个包含字段的DBObject 我创建了一个新对象:
BasicDBObject fields = new BasicDBObject();
fields.append("score", new BasicDBObject("$meta", "textScore"));
我正在使用以下命令调用find:
DBCursor cursor = coll.find(query, fields);
现在,我可以通过与获得姓名相同的方式获得分数。如果您的问题得到回答,您甚至可以接受自己的帖子,向他人展示您的解决方案是有效的。谢谢。我想我需要等几天才能做到这一点。我正在使用mongo java driver 3.0,但没有接受两个bson对象的find()函数。还有别的选择吗?
DBCursor cursor = coll.find(query, fields);