【发布时间】: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