mongodb排序内部日期字段不起作用

问题描述 投票:0回答:1

我试图按日期字段对内部数组进行排序,但是,我无法做到。这是我的一个示例文档。

{
    "_id" : "BTC-ADX",
    "parity" : "BTC-ADX",
    "data" : [
        {
            "open" : 0.001,
            "high" : 0.002,
            "close" : 0.0015,
            "low" : 0.0012,
            "date" : ISODate("2018-03-16T05:00:00Z")
        },
        {
            "open" : 265,
            "high" : 397,
            "low" : 190,
            "close" : 125,
            "date" : ISODate("2018-03-16T06:00:00Z")
        },
        {
            "open" : 265,
            "high" : 397,
            "low" : 190,
            "close" : 125,
            "date" : ISODate("2018-03-16T07:00:00Z")
        },
        {
            "open" : 265,
            "high" : 397,
            "low" : 190,
            "close" : 125,
            "date" : ISODate("2018-03-16T06:30:00Z")
        }
    ]
}

另外,我有一个像索引;

{
    "v" : 1,
    "unique" : true,
    "key" : {
        "parity" : 1,
        "data.date" : -1
    },
    "name" : "parity_1_data.date_-1",
    "ns" : "crypto.stockentities"
}

这是我正在运行的查询

db.stockentities.find({_id:"BTC-ADX"}).sort({ parity:1, "data.date":-1 }).pretty()

但是这个查询返回的是我上面分享的相同顺序。

谢谢你的帮助!

mongodb
1个回答
0
投票

我使用了@JohnnyHK建议的聚合。

db.stockentities.aggregate( {$match : {parity: "BTC-ADX"}}, {$unwind: "$data"}, {$sort: {'data.date': -1}}, {$limit: 1} )

但是,我不确定聚合是否使用索引。因此,这种方法可能存在性能问题。

© www.soinside.com 2019 - 2024. All rights reserved.