当查询字段为objectId时,geoNear聚合是不是不起作用?
Posted
技术标签:
【中文标题】当查询字段为objectId时,geoNear聚合是不是不起作用?【英文标题】:Does geoNear aggregation not work when the query field is the objectId?当查询字段为objectId时,geoNear聚合是否不起作用? 【发布时间】:2021-06-20 12:59:48 【问题描述】:我的 geonear 代码可以正常工作,除非我输入查询:id: req.params.id。它适用于我放置的任何其他过滤器对象。
有谁知道在使用 geoNear 时如何使用 objectId 查询某个文档?
我目前有以下内容。是否还有任何方法可以首先对文档进行匹配,即$match:id:req.params.id。我试过这样做,但由于 $geoNear 必须是管道中的第一步,它没有成功。
const distances = await User.aggregate([
$geoNear:
near:
type: "Point",
coordinates: [lng, lat],
,
// maxDistance: 13.3333 * 1000,
spherical: true,
distanceField: "distance",
distanceMultiplier: 0.001,
query: _id: req.params.id ,
,
,
$project: id: 1, distance: 1 ,
]);
【问题讨论】:
【参考方案1】:unable to use $match operator for mongodb/mongoose aggregation with ObjectId ^ 已修复,抱歉!
【讨论】:
以上是关于当查询字段为objectId时,geoNear聚合是不是不起作用?的主要内容,如果未能解决你的问题,请参考以下文章
MongoDB 查询聚合 localField ObjectId 字符串和外部字段 ObjectId