GraphQL和MongoDB` $ geoNear`聚合

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GraphQL和MongoDB` $ geoNear`聚合相关的知识,希望对你有一定的参考价值。

我正在尝试从我的MongoDB数据库中检索一些对象,这些对象的位置接近给定的坐标集,然后将它们排在最近的最远的位置,这是有效的。问题是我还想显示每个物体的距离,例如“1.3米远”。

我以前使用的$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
      }
    }
  ]),
答案

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

以上是关于GraphQL和MongoDB` $ geoNear`聚合的主要内容,如果未能解决你的问题,请参考以下文章

GraphQL 和 MongoDB 中的多态数据结构

如何使用 GraphQL 和 Mongodb 编写 lambda 函数?

GraphQL、Relay 和 Mongodb (mongoose) 如何获取数组

Apollo Angular 无法从 GraphQL/MongoDB 获取数据

.NET Core 3.1 + GraphQL + MongoDB

使用 express 和 Mongodb 的 Graphql 查询将无法正常工作?