Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将mongo search从runCommand升级为使用Java驱动程序查找_Java_Mongodb - Fatal编程技术网

将mongo search从runCommand升级为使用Java驱动程序查找

将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版和更高版本

我正在使用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版和更高版本更喜欢的方式。到目前为止,我已经:

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);