我有三个收藏。在这里,对于一个订单,我有多个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
必须先总管道的阶段。