【问题标题】:GraphQL and MongoDB `$geoNear` aggregationGraphQL 和 MongoDB `$geoNear` 聚合
【发布时间】:2018-08-25 09:36:48
【问题描述】:

我正在尝试从我的 MongoDB 数据库中检索一些对象,这些对象的位置靠近给定的一组坐标,然后将它们从最近到最远排序,这是可行的。问题是我还想显示每个对象的距离,例如'1.3m away'。

我以前使用$near,它工作得很好,但切换到使用$geoNear,因为它能够通过向每个对象返回的json添加一个额外的字段来返回到给定坐标的距离,例如一个新的 distance 字段以及现有字段。

$geoNear 在文档中被描述为aggregation,但不确定这有什么区别。我的 $geoNear$near 的工作方式完全一样,因此以正确的顺序检索正确的对象,但无法检索新的 distance 字段。

如何让 GraphQL 返回仅通过 mongoDB 查询/聚合存在的字段?

这是我的这个查询的解析器:

  findNearestShops: async ({ coordinates }) => Shop.aggregate([
    {
      $geoNear: {
        near: { type: 'Point', coordinates },
        distanceField: 'distance',
        minDistance: 0,
        maxDistance: 8046.72,
        spherical: true
      }
    }
  ]),

【问题讨论】:

    标签: node.js mongodb api mongoose graphql


    【解决方案1】:

    将新的 distance 字段添加到我正在搜索的对象类型的 GraphQL 架构中,并将其添加为前端 GraphQL 查询的返回字段似乎可以解决问题。

    【讨论】:

      猜你喜欢
      • 2023-03-21
      • 2013-04-29
      • 1970-01-01
      • 2015-05-29
      • 1970-01-01
      • 2020-12-26
      • 2017-07-18
      • 2017-06-03
      • 1970-01-01
      相关资源
      最近更新 更多