MongoDB-groupby-aggregation-java
我的mongodb中有一个这样的文件-MongoDB-groupby-aggregation-java,java,mongodb,Java,Mongodb,我的mongodb中有一个这样的文件- public class AppCheckInRequest { private String _id; private String uuid; private Date checkInDate; private Double lat; private Double lon; private Double altitude; } 数据库将包含多个uuid相同但签入日期不同的文档 问题 我想使用java
public class AppCheckInRequest {
private String _id;
private String uuid;
private Date checkInDate;
private Double lat;
private Double lon;
private Double altitude;
}
- 数据库将包含多个uuid相同但签入日期不同的文档
db.items.aggregate({$group : {_id : "$uuid" , value : { $push : "$somevalue"}}} )
使用$first而不是$push只会从每个应用程序中放入一个(我想这是您想要的):
你能把它翻译成JavaAPI吗?或者我也会试着补充一下
。。。好的,下面是一些Java:
假设我的集合中的文档是{u id:“someid”,name:“somename”,value:“some value”}
然后,此代码将按名称对它们进行分组:
Mongo client = new Mongo("127.0.0.1");
DBCollection col = client.getDB("ajs").getCollection("items");
AggregationOutput agout = col.aggregate(
new BasicDBObject("$group",
new BasicDBObject("_id", "$name").append("value", new BasicDBObject("$push", "$value"))));
Iterator<DBObject> results = agout.results().iterator();
while(results.hasNext()) {
DBObject obj = results.next();
System.out.println(obj.get("_id")+" "+obj.get("value"));
}
Mongo客户端=新的Mongo(“127.0.0.1”);
DBCollection col=client.getDB(“ajs”).getCollection(“items”);
AggregationOutput agout=列聚合(
新的BasicDBObject($group),
新的BasicDBObject(“\u id”,“$name”)。追加(“value”,新的BasicDBObject(“$push”,“$value”));
迭代器结果=agout.results().Iterator();
while(results.hasNext()){
DBObject obj=results.next();
System.out.println(obj.get(“_id”)+”+obj.get(“value”);
}
如果您将$push更改为$first,则每组只能获得1。一旦查询成功,您就可以添加其余字段。如果您对Java对话有任何帮助,我们将不胜感激。@bickster您的愿望就是我的命令。我刚刚完成了蒙哥纳大学m101j课程,所以我需要练习,让它牢牢地印在我的脑海中:)
Mongo client = new Mongo("127.0.0.1");
DBCollection col = client.getDB("ajs").getCollection("items");
AggregationOutput agout = col.aggregate(
new BasicDBObject("$group",
new BasicDBObject("_id", "$name").append("value", new BasicDBObject("$push", "$value"))));
Iterator<DBObject> results = agout.results().iterator();
while(results.hasNext()) {
DBObject obj = results.next();
System.out.println(obj.get("_id")+" "+obj.get("value"));
}