MongoDB位置数组仅返回匹配的位置

时间:2015-09-02 16:17:34

标签: mongodb aggregation-framework geospatial

举一个示例场景......假设我们有一个MongoDB公司集合。每个公司文档可以有多个地址(存储在地址数组中)。我想搜索我所在位置附近的公司,但只显示$ geoNear运算符匹配的地址,而不是所有其他Address数组成员。

我尝试过类似的事情:

db.Companies.aggregate(
        { 
            '$geoNear': { 
                near: [ -77.3898602, 38.8735614], 
                distanceField: 'dist.Distance', 
                maxDistance: 0.02020712301086133,
                spherical: true, 
                distanceMultiplier: 4948.75,
                includeLocs: "dist.location"
                } 
        })

这给了我用于计算距离的数组成员的坐标,但我真的只想要父文档减去没有匹配的地址数组成员。

任何想法或提示??

提前致谢!

1 个答案:

答案 0 :(得分:0)

执行计数

以下示例选择要使用$ match管道运算符处理的文档,然后将结果通过管道传输到$ group管道运算符以计算文档计数:

db.articles.aggregate( [
                        { $match : { score : { $gt : 70, $lte : 90 } } },
                        { $group: { _id: null, count: { $sum: 1 } } }
                       ] );

在汇总管道中,$ match选择分数大于70且小于或等于90的文档。然后将这些文档传送到$ group以执行计数。聚合返回以下内容:

{
  "result" : [
               {
                 "_id" : null,
                 "count" : 3
               }
             ],
  "ok" : 1
}