0

如何通过日期时间排序从 Mongo Collection 中获取不同的 id 列表?

DBObject queryObject = new BasicDBObject("dateTime",-1);
List<String> objects= MDB.getCollection("messages").distinct("_stdid",queryObject);
4

1 回答 1

0

这很棘手,因为_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 );
于 2013-07-10T10:52:07.860 回答