Mongodb聚合,在值数组中查找

时间:2014-07-17 16:39:56

标签: mongodb aggregation-framework

我有一个使用以下结构创建文档的方案:

{
    "_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" },
        }}



    ]

这似乎有效,但它并没有拉近最接近的值。它似乎提取了大于或等于的任何东西,并且它似乎没有被应用,所以它将拉出一个远期的时间戳。

任何建议都会很棒!

谢谢

0 个答案:

没有答案