在 mongo 外壳中:-
这将为您提供整个分组:
db.items.aggregate({$group : {_id : "$uuid" , value : { $push : "$somevalue"}}} )
并且使用 $first 而不是 $push 只会从每个中放一个(我想这是你想要的吗?):
db.items.aggregate({$group : {_id : "$uuid" , value : { $first : "$somevalue"}}} )
你能把它翻译成Java api吗?或者我也会尝试添加它。
...好的,这是一些Java:
假设我的集合中的文档是 {_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"));
}
如果您将 $push 更改为 $first,则每组只能获得 1 个。然后,您可以在此查询正常工作后添加其余字段。