条件作为结果variables

现在我有这个使用地理空间数据的Moongose查询:

Locations.find({ loc: { $geoWithin: { $centerSphere: [[lng, lat], radius / 6378.1], }, } }, cb); 

它运作良好,但我的问题是如何获得所有的Location文件,其中每个将有一个布尔variables,显示该特定的文档是否在从where子句指定的圆内。

您可以使用汇总$project阶段来做类似的事情,将条件作为结果文档中的附加字段进行投影。 不幸的是,没有为聚合框架定义GeoSpatial运算符,因此在单个MongoDB查询中无法实现您的目标。

如果两个查询都可以,你可以尝试下面的选项:

 db.locations.aggregate([ {$match: { loc: { $geoWithin: { $centerSphere: [[lng, lat], radius / 6378.1], }, } } }, {$project: { ... // all of your fields ... isWithin: true } } ]) 

然后做相同的事情来匹配不在的文档,并将其设置为false 。 这将人为地得到你想要的结果。