gpt4 book ai didi

java - 我可以在聚合框架中仅使用最新日期获取字段的不同值吗?

转载 作者:行者123 更新时间:2023-12-01 12:01:53 25 4
gpt4 key购买 nike

我有一个完整的出租车数据集合,看起来像这样(简化):

{
"TaxiLicense" : "TET123",
"GetOff" : "2015-01-10,00:02:11",
"GetOffLongitude" : 121.41
}

自从有了这些实时数据后,Taxi 就会不断向集合发送新文档,其中包含新的下车时间和 GPS 坐标。我只想要每个不同出租车执照在最近下车时间的 GPS 坐标。

聚合框架是否有办法在 Java 中执行此操作,或者我是否需要聚合所有条目,然后让我的 Java 程序找到每个唯一出租车的最新时间?

我目前正在与

DBObject taxigroup = new BasicDBObject("$group",
new BasicDBObject("_id",
new BasicDBObject("License","$TaxiLicense")
.append("getoff","$GetOff").append("longitude","GetOffLongitude"))
);
AggregationOutput aggout = taxistationOfCollection.aggregate( Arrays.asList(taxigroup));

最佳答案

您基本上是在寻找 $last运算符(operator)。这通常与 $sort 一起使用。它返回在分组边界找到的“最后”文档属性。

基本管道:

[
{ "$sort": { "TaxiLicence": 1, "GetOff": 1 } },
{ "$group": {
"_id": "$TaxiLicence",
"GetOff": { "$last": "$GetOff" },
"GetOffLongitude": { "$last": "$GetOffLongitude" }
}}
]

或者专门使用 Java 驱动程序构建:

  DBObject sort = new BasicDBObject("$sort",
new BasicDBObject("TaxiLicence", 1)
.append("GetOff",1)
);

DBObject group = new BasicDBObject("$group",
new BasicDBObject("_id", "$TaxiLicence"
.append("GetOff", new BasicDBObject( "$first", "$GetOff" ) )
.append("GeOffLongitude", new BasicDBObject( "$first", "$GeOffLongitude" ))
);

AggregationOutput aggout = taxistationOfCollection.aggregate(sort,group);

关于java - 我可以在聚合框架中仅使用最新日期获取字段的不同值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27935348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com