用Pymongo按距离和日期查询

时间:2019-03-08 01:55:42

标签: python mongodb pymongo

我知道这是一个非常基本的问题,但我不知道该怎么做。

我在Python 3和MongoDB 3.4.19中使用pymongo 3.6.1。我正在尝试从数据库中检索低于特定日期的记录,并按距离排序。通过单独的功能是:

db[database].MIDAS_stations.find(
        {
            "loc": {
                "$near": {
                  "$geometry": {
                    "type": "Point",
                    "coordinates": coords
                  }
                }
              }
        }
    )

db[database].MIDAS_stations.find(
        {
          "Station start date": {
            "$gt": date1
          }
        }
    )

我尝试使用聚合而不是查找,但是我仍然没有找到实现此目的的方法。

我知道MongoDB/PyMongo: Querying multiple criteria - unexpected results也有类似的答案,但是我的问题有所不同,因为它利用了地理参考数据。

MongoDB/PyMongo: Querying multiple criteria - unexpected resultshttps://stackoverflow.com/a/23577413/2313887看来,这个问题的答案是:

db[database].MIDAS_stations.find(
    {            
        "loc": {
            "$near": {
                "$geometry": {
                    "type": "Point",
                    "coordinates": coords
                }
            }
        },
        "Station start date": {
                "$lt": date1
            }
    }
)

但是我仍然不确定这是否是正确的方法,或者它是否确实在查询最近的条目,然后仅选择日期小于date1的条目。

1 个答案:

答案 0 :(得分:0)

我认为这是答案:

to_check= db[database].MIDAS_stations.find(
    {
        "$and": [
            {
              "Station start date": {
                '$gt': date1
              }
            },
            {
                'loc': {
                    '$near': {
                      '$geometry': {
                        'type': "Point",
                        'coordinates': coords
                      }
                    }
                  }
            }
        ]
    }
)