在Aggogate Mongo中的两个$ Geonear

问题描述

该集合具有两个地理字段:fromLocation和toLocation。但是只允许一个Geonear。 该集合看起来像:

...............
 fromLocation: {
    type: { type: String,default: "Point" },coordinates: [Number],},toLocation: {
    type: { type: String,.........................................

请给出示例代码,如何使用Geonear通过两个字段进行搜索。 我的一次字段搜索代码

[
  {
    '$geoNear': {
      near: [Object],key: 'fromLocation',distanceField: 'fromdistance',spherical: true
    }
  },{
    '$match': {
      status: 2,'from.data.city_fias_id': '27c5bc66-61bf-4a17-b0cd-ca0eb64192d6','to.data.city_fias_id': '27c5bc66-61bf-4a17-b0cd-ca0eb64192d6','car.paymentInfo.id': [Object],budget: [Object]
    }
  },{
    '$lookup': {
      from: 'users',localField: 'autor',foreignField: '_id',as: 'autor'
    }
  },{ '$unwind': '$autor' },{ '$addFields': { sortBudget: [Object] } },{ '$sort': { sortBudget: 1 } },{ '$group': { _id: null,total: [Object],results: [Object] } },{ '$project': { total: 1,results: [Object] } }
]

解决方法

距离计算非常简单。对于更具选择性的条件,请使用$ geoNear来利用地理位置索引,对于第二个条件,请使用$ match和$ expr。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...