mongoTemplate.execute(js) 为什么最多返回的101 条数据

新手上路,请多包涵

问题描述

BasicDBObject result = (BasicDBObject)mongoTemplate.execute(js);
最多只能返回101条数据,js脚本结果没有toArray()

问题出现的环境背景及自己尝试过哪些方法

更换,Java mongoTemplate,mongoDB 数据库版本,
使用不通访问方法

        Object object1 = mongoTemplate.getDb().doEval(js.toString());
        Object object2 =  mongoTemplate.getDb().command(bson);
        Object object3 = mongoTemplate.getCollection("$cmd").findOne(bson);

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

public List<VmGroupInfo> searchVmPerformance(String organizationUuid, Double cpuUsageMin, Double cpuUsageMax,
                                             Double memUsageMin, Double memUsageMax, Date startTime,
                                             Date endTime) {

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy,MM,dd");
    StringBuffer js = new StringBuffer();
    List<VmGroupInfo> list = new ArrayList<>();
    js.append("db.topNVmGroupInfo.aggregate([                                      ");
    js.append("{                                                                   ");
    js.append("    $match : {                                                         ");
    js.append("        count : {                                                      ");
    js.append("            $gt : 0                                                    ");
    js.append("        },                                                             ");
    js.append("        $or : [ {                                                      ");
    js.append("            day : {                                                    ");
    js.append("                $gte : new Date('" + sdf.format(startTime) + "'),          ");
    js.append("                $lte : new Date('" + sdf.format(endTime) + "')              ");
    js.append("            },                                                         ");
    js.append("            type : {                                                   ");
    js.append("                $eq : 1                                                ");
    js.append("            }                                                          ");
    js.append("        } ]                                                            ");
    js.append("    }                                                                  ");
    js.append("},                                                                  ");
    js.append("{                                                                   ");
    js.append("    $group : {                                                         ");
    js.append("        _id : '$_id',                                           ");
    js.append("        count : {                                                      ");
    js.append("            $sum : '$count'                                            ");
    js.append("        },                                                             ");
    js.append("        cpuTotal : {                                                     ");
    js.append("            $sum : '$cpuTotal'                                           ");
    js.append("        },                                                             ");
    js.append("        memTotal : {                                                     ");
    js.append("            $min : '$memTotal'                                           ");
    js.append("        },                                                             ");
    js.append("        displayName : {                                                ");
    js.append("            $last : '$displayName'                                     ");
    js.append("        },                                                             ");
    js.append("        name : {                                                       ");
    js.append("            $last : '$name'                                            ");
    js.append("        },                                                             ");
    js.append("        clusterName : {                                                       ");
    js.append("            $last : '$clusterName'                                            ");
    js.append("        },                                                             ");
    js.append("        hypervisorType : {                                                       ");
    js.append("            $last : '$hypervisorType'                                            ");
    js.append("        },                                                             ");
    js.append("        cpuNumber : {                                                       ");
    js.append("            $last : '$cpuNumber'                                            ");
    js.append("        },                                                             ");
    js.append("        memSize : {                                                       ");
    js.append("            $last : '$memSize'                                            ");
    js.append("        },                                                             ");
    js.append("        cpuMax : {                                                     ");
    js.append("            $max : '$cpuMax'                                           ");
    js.append("        },                                                             ");
    js.append("        memMax : {                                                     ");
    js.append("            $max : '$memMax'                                           ");
    js.append("        },                                                             ");
    js.append("        businessUuid : {                                               ");
    js.append("            $last : '$businessUuid'                                    ");
    js.append("        },                                                             ");
    js.append("        businessName : {                                               ");
    js.append("            $last : '$businessName'                                    ");
    js.append("        },                                                             ");
    js.append("        instanceUuid : {                                               ");
    js.append("            $last : '$instanceUuid'                                    ");
    js.append("        },                                                             ");
    js.append("        organizationUuid : {                                           ");
    js.append("            $last : '$organizationUuid'                                ");
    js.append("        },                                                             ");
    js.append("        organizationName : {                                           ");
    js.append("            $last : '$organizationName'                                ");
    js.append("        },                                                             ");
    js.append("        ip : {                                                    ");
    js.append("            $last : '$ip'                                         ");
    js.append("        },                                                              ");
    js.append("        appName : {                                                    ");
    js.append("            $last : '$appName'                                         ");
    js.append("        }                                                              ");
    js.append("    }                                                                  ");
    js.append("},                                                                  ");
    js.append("{                                                                   ");
    js.append("    $project : {                                                       ");
    js.append("        _id : 1,                                                       ");
    js.append("        avgCpu : {                                                     ");
    js.append("            $divide : [ '$cpuTotal', '$count' ]                        ");
    js.append("        },                                                             ");
    js.append("        avgMem : {                                                     ");
    js.append("            $divide : [ '$memTotal', '$count' ]                        ");
    js.append("        },                                                             ");
    js.append("        cpuMax : 1,                                                    ");
    js.append("        memMax : 1,                                                    ");
    js.append("        displayName : 1,                                               ");
    js.append("        businessUuid : 1,                                              ");
    js.append("        businessName : 1,                                              ");
    js.append("        name : 1,                                                      ");
    js.append("        instanceUuid : 1,                                              ");
    js.append("        organizationUuid : 1,                                          ");
    js.append("        organizationName : 1,                                          ");
    js.append("        clusterName : 1,                                          ");
    js.append("        hypervisorType : 1,                                          ");
    js.append("        cpuNumber : 1,                                                    ");
    js.append("        memSize : 1,                                                    ");
    js.append("        ip : 1,                                          ");
    js.append("        appName : 1                                                    ");
    js.append("    }                                                                  ");
    js.append("},                                                                  ");
    js.append("{                                                                   ");
    js.append("    $match : {                                                         ");
    //js.append("        avgCpu : {                                                     ");
    js.append("        cpuMax : {                                                     ");
    //js.append("            $gte : " + cpuUsageMin + ",                                    ");
    js.append("            $lte : " + cpuUsageMax + "                                     ");
    js.append("        },                                                             ");
    //js.append("        avgMem : {                                                     ");
    js.append("        memMax : {                                                     ");
    //js.append("            $gte : " + memUsageMin + ",                                    ");
    js.append("            $lte : " + memUsageMax + "                                     ");
    if(StringUtils.isNotEmpty(organizationUuid)) {
        js.append("        },                                                             ");
        js.append("        organizationUuid : {                                           ");
        js.append("            $regex : /" + organizationUuid + ".*/i                                         ");
        js.append("        }                                                              ");
    }else{
        js.append("        }                                                              ");
    }
    js.append("    }                                                                  ");
    js.append("} ])                                                               ");

    NamedMongoScript mongoScript = new NamedMongoScript("searchVmPerformance", js.toString());
    
    

// BasicDBObject bson = new BasicDBObject();
// bson.put("$eval",js.toString());
//
// Object object1 = mongoTemplate.getDb().doEval(js.toString());
// Object object2 = mongoTemplate.getDb().command(bson);
// Object object3 = mongoTemplate.getCollection("$cmd").findOne(bson);
// ExecutableMongoScript executableMongoScript = new ExecutableMongoScript(js.toString());
// System.out.println(js.toString());

     ScriptOperations scriptOps = mongoTemplate.scriptOps();

//

    //Object obj4 = scriptOps.execute(mongoScript.getScript(),new Object[] {});
     // 使用'echo'作为脚本的名称来存储脚本。给定的名称标识脚本并允许稍后调用它。
    scriptOps.register(new NamedMongoScript("topN", js.toString()));
    // 使用提供的参数执行名为“echo”的脚本。
    Object call = scriptOps.call("topN");
 
    //Object obj = scriptOps.execute(mongoScript.getScript(), new Object[] {});

    //BasicDBObject result = (BasicDBObject) obj;
    
    
    

// while (dbCursor.hasNext()) {
// DBObject dbObject = dbCursor.next();
// System.out.println("* " + dbCursor.next());
// Gson gson = new GsonBuilder().registerTypeAdapter(Date.class, new ParseJsonToDate())
// .setDateFormat("'yyyy-MM-dd'").create();
// VmGroupInfo fromJson = gson.fromJson(gson.toJson(dbObject), VmGroupInfo.class);
// list.add(fromJson);
// }
//
// try {
// dbCursor.close();
// } catch (Exception e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
//

// Map map = result.toMap();
// Object obj = map.get("_firstBatch");
//
// System.out.println(js.toString());
// ArrayList<Object> arrays = gson.fromJson(gson.toJson(obj), ArrayList.class);
// for (Object _temp : arrays) {
// Gson gson2 = new Gson();
// VmGroupInfo vmGroupInfo = gson2.fromJson(gson2.toJson(_temp), VmGroupInfo.class);
// list.add(vmGroupInfo);
// }

    Collections.reverse(list);
    return list;
}

你期待的结果是什么?实际看到的错误信息又是什么?

BasicDBObject result = (BasicDBObject)mongoTemplate.execute(js);为什么最多返回的101 条数据
对象里面的“firstBath” 是谁存的

阅读 4.2k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题