2017-04-24 127 views
0

我在蒙戈下列文件:

{ 
    '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作为参数。我想要返回伪文档,但我只是得到None。我做错了什么?

谢谢。

回答

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