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

时间:2018-03-05 01:43:33

标签: mongodb

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

[['beta blockers', 'magic', '1980', 'presse medicale'], ['hypertension pregnant woman', '', '2010', 'medical'], ['arterial hypertension', '', '1920', 'nouvelle']]

另外,我有一个像;

这样的索引
{
    "_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"
}

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

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

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

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

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