我有一个像这样的集合:
{"x":{"y":[
{"date":ISODate("2014-07-24T21:00:00.000Z"),"k":5 },
{"date":ISODate("2014-07-22T21:00:00.000Z"),"k":6 } ] }}
我想根据“日期”参数对 y 数组进行排序。所以我编写了这样的代码:
query.with(new Sort(Sort.Direction.ASC, "y.date"));
我想这样输出:
{"x":{"y":[
{"date":ISODate("2014-07-22T21:00:00.000Z"),"k":5 },
{"date":ISODate("2014-07-24T21:00:00.000Z"),"k":6 } ] }}
如何才能得到这样的输出?是我编写的代码,可以吗?
最佳答案
使用聚合,您的查询应如下所示,因为您希望根据“日期”按升序对“y”的元素进行排序。
db.test.aggregate([ {$unwind: "$y"},
{$sort: {"y.date":1}},
{$group: {_id:"$_id", y: {$push:"$y"}}} ]);
关于mongodb - 在 spring-data mongodb 中对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25499928/