我知道这是一个非常基本的问题,但我不知道该怎么做。
我在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 results和https://stackoverflow.com/a/23577413/2313887看来,这个问题的答案是:
db[database].MIDAS_stations.find(
{
"loc": {
"$near": {
"$geometry": {
"type": "Point",
"coordinates": coords
}
}
},
"Station start date": {
"$lt": date1
}
}
)
但是我仍然不确定这是否是正确的方法,或者它是否确实在查询最近的条目,然后仅选择日期小于date1
的条目。
答案 0 :(得分:0)
我认为这是答案:
to_check= db[database].MIDAS_stations.find(
{
"$and": [
{
"Station start date": {
'$gt': date1
}
},
{
'loc': {
'$near': {
'$geometry': {
'type': "Point",
'coordinates': coords
}
}
}
}
]
}
)