[英]MongoDB - group by - aggregation - java
我的mongodb中有一個文檔如下所示-
public class AppCheckInRequest {
private String _id;
private String uuid;
private Date checkInDate;
private Double lat;
private Double lon;
private Double altitude;
}
問題
我想使用Java運行mongo查詢,它為每個uuid的checkInDate最接近當前時間的用戶提供一個AppCheckInRequest doc(所有字段)。
我相信我必須使用聚合框架,但是我無法弄清楚如何獲得所需的結果。 謝謝。
在mongo shell中:-
這將為您提供整個分組:
db.items.aggregate({$group : {_id : "$uuid" , value : { $push : "$somevalue"}}} )
並且使用$ first代替$ push只會從每個$ push中放一個(這是我想要的嗎?):
db.items.aggregate({$group : {_id : "$uuid" , value : { $first : "$somevalue"}}} )
您可以將其翻譯成Java api嗎? 否則我也會嘗試添加。
...好的,這是一些Java:
假設我的收藏夾中的文檔為{_id:“ someid”,名稱:“ somename”,值:“ 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。 一旦此查詢生效,您便可以添加其余字段。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.