我有一个使用以下结构创建文档的方案:
{
"_id" : "2014-07-16:52TEST",
"date" : ISODate("2014-07-16T23:52:59.811Z"),
"name" : "TEST"
"values" : [
[
1405471921000,
0.737121
],
[
1405471922000,
0.737142
],
[
1405471923000,
0.737142
],
[
1405471924000,
0.737142
]
]
}
在值中,第一个索引是时间戳。我尝试做的是查询特定时间戳以找到最接近的值($gte
)。
我已尝试过以下聚合查询:
[
{ "$match": {
"values": {
"$elemMatch": { "0": {"$gte": 1405471923000} }
},
"name" : 'TEST'
}},
{ "$project" : {
"name" : 1,
"values" : 1
}},
{ "$unwind": "$values" },
{ "$match": { "values.0": { "$gte": 1405471923000 } } },
{ "$limit" : 1 },
{ "$sort": { "values.0": -1 } },
{ "$group": {
"_id": "$name",
"values": { "$push": "$values" },
}}
]
这似乎有效,但它并没有拉近最接近的值。它似乎提取了大于或等于的任何东西,并且它似乎没有被应用,所以它将拉出一个远期的时间戳。
任何建议都会很棒!
谢谢