MongoDb中的最大值

MongoDb中的最大值,mongodb,Mongodb,我在Collectionname中的Dbname中有许多记录 "_id" : ObjectId("53e32f83bca58515b6eee86e"), "data" : [{ "id" : "7676722", "created_time" : "2014-03-16T17:06:49+0000" }] …. 如何在Collectionname中的Dbname中选择创建时间的最大值 sql模拟=从Db

我在Collectionname中的Dbname中有许多记录

    "_id" : ObjectId("53e32f83bca58515b6eee86e"),
    "data" : [{              
        "id" : "7676722",
        "created_time" : "2014-03-16T17:06:49+0000"
    }]    
….
如何在Collectionname中的Dbname中选择创建时间的最大值


sql模拟=从Dbname.Collectionname中选择最大值(创建时间)

您可以使用
aggregate
执行此操作:

db.test.aggregate([
//将数据数组展开为每个文档一个元素
{$unwind:'$data'},
//按时间降序排列
{$sort:{'data.created_time':-1},
//就拿第一个吧
{$limit:1},
//项目只是需要的价值
{$project:{{u id:0,最大创建时间:'$data.created\u time'}
])

error uncaught exception:aggregate failed:{“errmsg”:“exception:Value在$unwind字段路径'$data'的末尾必须是一个数组,但它是一个字符串”,“code”:15978,“ok”:0}@user3916614这意味着您在集合中有一些文档,
data
是字符串,而不是数组。您需要首先清理这些文档。按原样,此查询将
$unwind
集合中的所有文档,以查找最长时间。我将添加初始
{$sort:{'data.created_time':-1}}
{$limit:1}
步骤,以便在展开
数据
数组之前查找具有最大
数据的文档。created_time
。如果这是一个常见的查询,那么在
{'data.created_time':-1}
上添加索引也会很有用。