MongoDB:如何检索嵌入文档的一部分?

时间:2015-05-25 12:48:01

标签: mongodb

我有这个数据集集合填充如下:

* A Datasets's element *
{
    _id: xQ2kqEdoewjPxpKQ5,
    name: "dataset_name",
    data : [
        {x: 0, y: -375.800005599856},
        {x: 0.000666666659526527, y: -375.300005592406},
        {x: 0.00133333331905305, y: -375.200005590916},
        {x: 0.00199999997857958, y: -375.400005593896},
        {x: 0.00266666663810611, y: -375.200005590916},
        {x: 0.00333333329763263, y: -374.700005583465},
        {x: 0.00399999995715916, y: -374.100005574524},
        {x: 0.00466666661668569, y: -373.800005570054},
        {x: 0.00533333327621222, y: -374.400005578995},
        {x: 0.00599999993573874, y: -375.300005592406},
        {x: 0.00666666659526527, y: -375.800005599856},
        {x: 0.0073333332547918, y: -376.300005607307},
        {x: 0.00799999991431832, y: -376.800005614758},
        {x: 0.00866666657384485, y: -377.400005623698},
        {x: 0.00933333323337138, y: -377.700005628169},
        {x: 0.0099999998928979, y: -378.000005632639}
    ]
}

要进行绘图,我只需要检索x在其间的点{x,y},让我们说xMin(0.005)和xMax(0.007)。

所以我想退回:

{
    {x: 0.00533333327621222, y: -374.400005578995},
    {x: 0.00599999993573874, y: -375.300005592406},
    {x: 0.00666666659526527, y: -375.800005599856}
}

我该怎么做? 我目前正在寻找总体方向。这样好吗?

1 个答案:

答案 0 :(得分:4)

您的查询应如下所示:

    db.collection.aggregate([ 
       { $match: {_id: "xQ2kqEdoewjPxpKQ5"} }, 
       { $unwind: "$data" }, 
       { $match: { "data.x": { $gt:xMin, $lt : xMax } },
       { $project : { _id: 0, data : 1 } }
       { $sort: { "data.x": 1 } }, 
       { $limit: 3 } 
   ])

您的结果应如下所示:

    { "data" : { x: 0.00533333327621222, y: -374.400005578995} }
    { "data" : { x: 0.00599999993573874, y: -375.300005592406} }
    { "data" : { x: 0.00666666659526527, y: -375.800005599856} }