如何在三个集合上创建MongoDB $ geoNear聚合查询?

时间:2019-04-20 16:29:36

标签: node.js mongodb mongoose

我有三个收藏。在这里,对于一个订单,我有多个order_bids

我想要实现的是一种聚合,该聚合将从与特定order_bids匹配的order_id集合中获取所有文档。然后,对于每个提取的order_bid文档,我想使用bid_by查找$geoNear用户位置和订单位置之间的距离。

1) orders

{
 _id : ObjectId('order1'),
 location: {
      type: "Point",
      coordinates: [-73.856077, 40.848447]
    }

}

2) order_bids
{
 _id : ObjectId('order_bid1'),
 order_id : ObjectId('order1'),  //ref to orders
 bid_by : ObjectId('user1')   //ref to users
}

3)users
{
 _id : : ObjectId('user1'),
  location: {
      type: "Point",
      coordinates: [-84.564077, 37.858447]
}

问题在于,首先我必须做两个$lookups,然后才能获得订单和用户的位置,然后$geoNear就可以了,但是$geoNear必须先总管道的阶段。

0 个答案:

没有答案