0

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

查询:

       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
                    ]
                }
        ... 
4

1 回答 1

0

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

于 2013-05-22T15:55:37.727 回答