我正在尝试按日期字段对内部数组进行排序,但是,我无法做到。这是我的一个示例文档。
[['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"
}
但是这个查询返回的是我上面分享的相同顺序。
感谢您的帮助!
答案 0 :(得分:0)
我使用了@JohnnyHK建议的聚合。
db.stockentities.aggregate( {$match : {parity: "BTC-ADX"}}, {$unwind: "$data"}, {$sort: {'data.date': -1}}, {$limit: 1} )
但是,我不确定聚合是否使用索引。因此,这种方法可能存在性能问题。