首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找管道中的MongoDB聚合geoNear不像文档

查找管道中的MongoDB聚合geoNear不像文档
EN

Stack Overflow用户
提问于 2022-11-08 16:11:05
回答 1查看 30关注 0票数 0

我将这个例子中的代码用于执行查找(左联接),然后执行geoNear。

代码语言:javascript
复制
    db.jobs.aggregate([
      {
        "$lookup": {
          "from": "companies",
          "localField": "company",
          "foreignField": "_id",
          "as": "company",
          "pipeline": [
            {
              "$geoNear": {
                "near": {
                  "type": "Point",
                  "coordinates": [
                    -80,
                    44
                  ],
                  
                },
                "key": "company.geo",
                "distanceField": "distance"
              }
            }
          ]
        }
      }
    ])

我创建了一个蒙戈游乐场

我搞错了

代码语言:javascript
复制
$geoNear is only valid as the first stage in an optimized pipeline

如何在查找管道中执行geoNear?删除管道显示已连接的文档。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-08 16:37:47

根本原因是您对$lookup使用了简洁的语法。从正式文件

新的简洁语法消除了在$expr操作符的外部和本地字段上在$match阶段匹配相等的要求。

因此,将localFieldforeignField的匹配作为子管道的第一阶段来处理.

解决方案:您可以简单地将子句移到$geoNear之后的另一个$geoNear阶段

代码语言:javascript
复制
db.jobs.aggregate([
  {
    "$lookup": {
      "from": "companies",
      "let": {
        company: "$company"
      },
      "as": "company",
      "pipeline": [
        {
          "$geoNear": {
            "near": {
              "type": "Point",
              "coordinates": [
                -80,
                44
              ],
              
            },
            "key": "company.geo",
            "distanceField": "distance"
          }
        },
        {
          $match: {
            $expr: {
              $eq: [
                "$_id",
                "$$company"
              ]
            }
          }
        }
      ]
    }
  }
])

蒙戈游乐场似乎无法证明这种情况下的行为,因为它涉及2d指数的使用。不过,我还是把放在这里了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74363863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档