条件作为结果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
。 这将人为地得到你想要的结果。