使用$ lte和$ gte的Pymongo查询不起作用

时间:2017-04-24 17:46:28

标签: python mongodb pymongo database

我在mongo中有以下文档:

{
    'Name': 'Dummy',
    'North-East-Bound': {
        'lat': 0,
        'lng': 0
    },
    'South-West-Bound': {
        'lat': 0,
        'lng': 0
    }
}

我正在进行以下查询:

result = self.coll.find_one({
            'North-East-Bound':
                {'lat': {'$gte': lat},
                 'lng': {'$gte': lng}
                 },
            'South-West-Bound':
                {'lat': {'$lte': lat},
                 'lng': {'$lte': lng}
                 }
        })

显然我使用lat = 0和lng = 0作为参数。我想要返回虚拟文档,但我得到无。我做错了什么?

感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用点表示法在嵌入文档的字段上运行查询。

 find_one({
      'North-East-Bound.lat': {
          '$gte': lat
      },
      'North-East-Bound.lng': {
          '$gte': lng
      },
      'South-West-Bound.lat': {
          '$lte': lat
      },
      'South-West-Bound.lng': {
          '$lte': lng
      }
  })

这将用于平等比较。这是嵌入式文档级别比较。

find_one({
    'North-East-Bound': {
        'lat': 0,
        'lng': 0
    },
    'South-West-Bound': {
        'lat': 0,
        'lng': 0
    }
})

更多信息

https://docs.mongodb.com/manual/core/document/#dot-notation

https://docs.mongodb.com/manual/tutorial/query-embedded-documents/#query-on-nested-field