2

我正在使用如下所示的代码:

if (collection.find(toFind) != null) {
            dataFound = collection.find(toFind).first();
        } else {
            System.err.println("NULL");
        }

由于collection.find() 在这里被调用了两次,那是在数据库上执行2 次搜索还是因为它返回一个FindIterable,它只是一个光标???

我们仅限于限制数据库操作并避免尽可能多的操作,因为我们按请求单位付费

4

1 回答 1

2

为什么不存储查找结果然后使用存储变量

var queryResult = collection.find(toFind)
if(queryResult != null){
 dataFound = queryResult.first()
} else { // Handle error here}

或者更好的是只使用 findOne 方法来获得第一个结果

var queryResult = collection.findOne(toFind)
if(!queryResult){
  //Handle result here
}

为了回答这个问题,是的,它将执行两次查询。

于 2019-07-01T11:30:43.190 回答