当我进行查询以找到最接近查询的子文档时,我做了这个:
查询:
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
]
}
...
答案 0 :(得分:1)
很抱歉这是不可能的,查询选择要返回哪些文档,并且无法确定返回的方式,除非通过投影包含和排除字段。为此,您需要将数据存储为单独的文档。