为了账号安全,请及时绑定邮箱和手机立即绑定

Mongodb排序内部数组

/ 猿问

Mongodb排序内部数组

一只萌萌小番薯 2019-08-23 09:34:40

Mongodb排序内部数组

我一直在寻找一段时间,似乎无法对内部数组进行排序,并将其保留在我正在使用的文档中。

{
    "service": {
        "apps": {
            "updates": [
              {
                "n" : 1
                "date": ISODate("2012-03-10T16:15:00Z")
              },
              {
                "n" : 2
                "date": ISODate("2012-01-10T16:15:00Z")
              },
              {
                "n" : 5
                "date": ISODate("2012-07-10T16:15:00Z")
              }
            ]
        }
     }
 }

所以我想保持项目作为服务返回,但我的更新数组已排序。到目前为止,我有shell:

db.servers.aggregate(
        {$unwind:'$service'},
        {$project:{'service.apps':1}},
        {$unwind:'$service.apps'}, 
        {$project: {'service.apps.updates':1}}, 
        {$sort:{'service.apps.updates.date':1}});

有人认为他们可以提供帮助吗?


查看完整描述

2 回答

?
三国纷争

您可以通过$unwindupdates数组执行此操作,对生成的文档进行排序date,然后使用排序顺序将$group它们重新组合在一起_id

db.servers.aggregate(
    {$unwind: '$service.apps.updates'}, 
    {$sort: {'service.apps.updates.date': 1}}, 
    {$group: {_id: '$_id', 'updates': {$push: '$service.apps.updates'}}}, 
    {$project: {'service.apps.updates': '$updates'}})


查看完整回答
反对 回复 2019-08-23
?
慕斯王

您可以在$group(在_id或作为单独的字段)中包含该字段$project。如果您需要更多帮助,最好将其作为一个单独的问题,因为它可能是非平凡的

查看完整回答
反对 回复 2019-08-23

添加回答

回复

举报

0/150
提交
取消
意见反馈 邀请有奖 帮助中心 APP下载
官方微信