如何通过日期时间排序从 Mongo Collection 中获取不同的 id 列表?
DBObject queryObject = new BasicDBObject("dateTime",-1);
List<String> objects= MDB.getCollection("messages").distinct("_stdid",queryObject);
如何通过日期时间排序从 Mongo Collection 中获取不同的 id 列表?
DBObject queryObject = new BasicDBObject("dateTime",-1);
List<String> objects= MDB.getCollection("messages").distinct("_stdid",queryObject);
这很棘手,因为_stdid的每个不同值都可以有不同的 dateTime 字段值。你想选哪一个?第一个,最后一个,平均数?
您还需要使用聚合框架,而不是直接区分。在 MongoDB shell 上,您将使用(如果您想要映射到单个 _stdid 字段的所有 dateTime 值中的第一个):
db.messages.aggregate( [
{ $group: { _id: '$_stdid', dateTime : { $first: '$dateTime' } } },
{ $sort: { dateTime : -1 } }
] );
在 Java 中,这看起来像:
// create our pipeline operations, first with the $group operation
DBObject groupFields = new BasicDBObject( "_id", "$_stdid" );
groupFields.put( "dateTime", new BasicDBObject( "$first", "$dateTime" ) );
DBObject group = new BasicDBObject( "$group", groupFields );
// then the $sort
DBObject sort = new BasicDBObject( "$sort", new BasicDBObject( 'dateTime', 1 ) );
// run aggregation
AggregationOutput output = MDB.getCollection("messages").aggregate( group, sort );