我正在尝试从我的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
}
}
]),
答案 0 :(得分:0)
将新的distance
字段添加到我正在搜索的对象类型的GraphQL架构中,并将其添加为前端GraphQL查询的返回字段似乎可以解决问题。