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来实现这一点的,因此从基本驱动程序的objectdb
连接中,您只需执行以下操作:
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来实现这一点的,因此从基本驱动程序的objectdb
连接中,您只需执行以下操作:
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来实现这一点的,因此从基本驱动程序的objectdb
连接中,您只需执行以下操作:
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()
方法返回一个游标,您可以