mongodb - 在 spring-data mongodb 中对数组进行排序

标签 mongodb sorting spring-data spring-data-mongodb

我有一个像这样的集合:

{"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/

相关文章:

mongodb - Mongodb 不在查询中,因为具有来自同一集合的两个文档子集

javascript - 对记录进行排序,然后在 MongoDB 中使用 updateMany 进行限制

java - 如何为每个 Mongo 文档分配一个用户(字符串值)?

spring - 从 Spring/MongoDB findAndModify 返回新旧实体

mysql - Vagrant : chef_solo | how i can change log path from mysql server and mongodb?

node.js - 同时 Mongo 插入是否有限制

c++ - 在 C++ 中对共享指针的 vector 进行排序

sorting - 如何使用 cygwin 排序对第 n 列上的制表符分隔文件进行排序?

java - 一种日期排序算法

mysql - Cassandra(NoSQL) 和 mysql(RDBMS) 是否可以有共同的实体