Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.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
Java Mongo DB聚合查询成批返回_Java_Mongodb_Mongodb Query_Aggregation Framework - Fatal编程技术网

Java Mongo DB聚合查询成批返回

Java Mongo DB聚合查询成批返回,java,mongodb,mongodb-query,aggregation-framework,Java,Mongodb,Mongodb Query,Aggregation Framework,我有以下代码: CommandResult cr = db.doEval("db." + collectionName + ".aggregate(" + query + ")"); 命令结果是分批给出的,在这里我需要得到单个值 Batch Result:{ "serverUsed" : "/servername" , "retval" : { **"_firstBatch**" : [ { "visitor_localdate" : 1367260200} ,

我有以下代码:

CommandResult cr = db.doEval("db." + collectionName + ".aggregate("
                + query + ")");
命令结果是分批给出的,在这里我需要得到单个值

Batch Result:{ "serverUsed" : "/servername" , "retval" : { **"_firstBatch**" : [ { "visitor_localdate" : 1367260200} , { "visitor_localdate" 
预期结果:

{ "serverUsed" : "/servername" , "retval" : { "**result**" : [ { "visitor_localdate" : 1367260200} , { "visitor_localdate"
我们使用的Mongo DB是2.6.4,64位


有人能帮忙吗?。我猜可能存在一些配置问题。

mongodb 2.6中添加了一些与bacth相关的内容,更多详细信息如下:

从链接

db.orders.aggregate(
[
      { $match: { status: "A" } },
      { $group: { _id: "$cust_id", total: { $sum: "$amount" } } },
      { $sort: { total: -1 } },
      { $limit: 2 }
],
      {
        cursor: { batchSize: 0 }
      }
)

您的聚合查询中可能有一个游标批处理

mongodb 2.6中添加了与bacth相关的内容,更多详细信息如下:

从链接

db.orders.aggregate(
[
      { $match: { status: "A" } },
      { $group: { _id: "$cust_id", total: { $sum: "$amount" } } },
      { $sort: { total: -1 } },
      { $limit: 2 }
],
      {
        cursor: { batchSize: 0 }
      }
)

您的聚合查询中可能有一个游标批处理

mongodb 2.6中添加了与bacth相关的内容,更多详细信息如下:

从链接

db.orders.aggregate(
[
      { $match: { status: "A" } },
      { $group: { _id: "$cust_id", total: { $sum: "$amount" } } },
      { $sort: { total: -1 } },
      { $limit: 2 }
],
      {
        cursor: { batchSize: 0 }
      }
)

您的聚合查询中可能有一个游标批处理

mongodb 2.6中添加了与bacth相关的内容,更多详细信息如下:

从链接

db.orders.aggregate(
[
      { $match: { status: "A" } },
      { $group: { _id: "$cust_id", total: { $sum: "$amount" } } },
      { $sort: { total: -1 } },
      { $limit: 2 }
],
      {
        cursor: { batchSize: 0 }
      }
)

您的聚合查询中可能有一个游标批处理

您的操作完全错误。您不需要像这样跳转来获得动态集合名称。只需使用以下语法即可:

var collectionName=“collection”;
var cursor=db[collectionName]。聚合(管道)
其中,
管道
也只是管道阶段文档的数组,即:

var管道=[{“$match”:{},{“$group”:{“\u id”:“$field”}];
无论如何,
.aggregate()
方法返回一个游标,您可以使用标准方法迭代结果:

while(cursor.hasNext()){
var doc=cursor.next();
//和医生做点什么
}
但实际上您是用Java而不是JavaScript来实现这一点的,因此从基本驱动程序的object
db
连接中,您只需执行以下操作:

DBObject match=new BasicDBObject(“$match”,new BasicDBObject());
DBObject group=new BasicDBObject(“$group”,new BasicDBObject());
列表管道=新的ArrayList();
管道。添加(匹配);
管道。添加(组);
AggregationOutput输出=db.getCollection(“collectionName”).aggregate(管道);
管道基本上是一个DBObject信息的列表接口,您可以在其中构造表示所需操作的BSON文档


这里的结果是
AggregationOutput
,但是通过额外提供
AggregationOptions
作为
管道的附加选项,您可以获得类似光标的结果。您不需要像这样跳转来获得动态集合名称。只需使用以下语法即可:

var collectionName=“collection”;
var cursor=db[collectionName]。聚合(管道)
其中,
管道
也只是管道阶段文档的数组,即:

var管道=[{“$match”:{},{“$group”:{“\u id”:“$field”}];
无论如何,
.aggregate()
方法返回一个游标,您可以使用标准方法迭代结果:

while(cursor.hasNext()){
var doc=cursor.next();
//和医生做点什么
}
但实际上您是用Java而不是JavaScript来实现这一点的,因此从基本驱动程序的object
db
连接中,您只需执行以下操作:

DBObject match=new BasicDBObject(“$match”,new BasicDBObject());
DBObject group=new BasicDBObject(“$group”,new BasicDBObject());
列表管道=新的ArrayList();
管道。添加(匹配);
管道。添加(组);
AggregationOutput输出=db.getCollection(“collectionName”).aggregate(管道);
管道基本上是一个DBObject信息的列表接口,您可以在其中构造表示所需操作的BSON文档


这里的结果是
AggregationOutput
,但是通过额外提供
AggregationOptions
作为
管道的附加选项,您可以获得类似光标的结果。您不需要像这样跳转来获得动态集合名称。只需使用以下语法即可:

var collectionName=“collection”;
var cursor=db[collectionName]。聚合(管道)
其中,
管道
也只是管道阶段文档的数组,即:

var管道=[{“$match”:{},{“$group”:{“\u id”:“$field”}];
无论如何,
.aggregate()
方法返回一个游标,您可以使用标准方法迭代结果:

while(cursor.hasNext()){
var doc=cursor.next();
//和医生做点什么
}
但实际上您是用Java而不是JavaScript来实现这一点的,因此从基本驱动程序的object
db
连接中,您只需执行以下操作:

DBObject match=new BasicDBObject(“$match”,new BasicDBObject());
DBObject group=new BasicDBObject(“$group”,new BasicDBObject());
列表管道=新的ArrayList();
管道。添加(匹配);
管道。添加(组);
AggregationOutput输出=db.getCollection(“collectionName”).aggregate(管道);
管道基本上是一个DBObject信息的列表接口,您可以在其中构造表示所需操作的BSON文档


这里的结果是
AggregationOutput
,但是通过额外提供
AggregationOptions
作为
管道的附加选项,您可以获得类似光标的结果。您不需要像这样跳转来获得动态集合名称。只需使用以下语法即可:

var collectionName=“collection”;
var cursor=db[collectionName]。聚合(管道)
其中,
管道
也只是管道阶段文档的数组,即:

var管道=[{“$match”:{},{“$group”:{“\u id”:“$field”}];
无论如何,
.aggregate()
方法返回一个游标,您可以