mongodb地理空间子查询在数组中,如何返回最接近查询的数组元素?

时间:2013-05-21 20:56:17

标签: mongodb

当我进行查询以找到最接近查询的子文档时,我做了这个:

查询:

       db.areas.findOne( 
               { 'coordinates.geoindex' :
               { $near : [ 2.364022, 48.896606 ] } 
               } 
               )

它返回包含具有最近元素的数组的文档到查询。 但是我想找到最近的子元素。

例如,对于该查询,我应该首先找到第二个数组项“Aubervilliers”。

你认为这可能吗?

文档样式:

                {
            "_id" : ObjectId("5199335f6db079ede30000"),
            "commercial_name" : "Paris area",
            "coordinates" : [ 
                {
                    "long_name" : "Arcueil",
                    "short_name" : "Arcueil",
                    "geoindex" : [ 
                        2.334955, 
                        48.80486
                    ]
                }, 
                {
                    "long_name" : "Aubervilliers",
                    "short_name" : "Aubervilliers",
                    "geoindex" : [ 
                        2.384049, 
                        48.912259
                    ]
                }, 
                {
                    "long_name" : "Bagnolet",
                    "short_name" : "Bagnolet",
                    "geoindex" : [ 
                        2.4234589, 
                        48.870364
                    ]
                }, 
                {
                    "long_name" : "Boulogne-Billancourt",
                    "short_name" : "Boulogne-Billancourt",
                    "geoindex" : [ 
                        2.237803, 
                        48.84325
                    ]
                }, 
                {
                    "long_name" : "Charenton",
                    "short_name" : "Charenton-le-Pont",
                    "geoindex" : [ 
                        2.4158559, 
                        48.819918
                    ]
                }
        ... 

1 个答案:

答案 0 :(得分:1)

很抱歉这是不可能的,查询选择要返回哪些文档,并且无法确定返回的方式,除非通过投影包含和排除字段。为此,您需要将数据存储为单独的文档。