2016-11-07 108 views
2

我目前使用MongoChef(4.3.0)访问Azure文档数据库(using DocumentDB protocol support for MongoDB)。mongochef azure文档数据库查询问题

有问题的数据是从应用程序中洞察连续出口具有以下类型的数据中(还有其他的数据有,但是这是我感兴趣的关键部分...)

{ 
    ... other fields ... 
    "request" : [ 
     { 
      "name" : "GET /images/loading_man.gif", 
      "count" : NumberInt(1), 
      "responseCode" : NumberInt(200), 
      "success" : NumberInt(1), 
      "url" : "http://<removed>.cloudapp.azure.com/<something>/images/loading_man.gif" 
      ... other fields ... 
     } 
    ] 
    ... other fields ... 
} 

使用MongoChef我可以执行一些基本的查询,如下所示没有问题;

{ "request": { $exists: true } } 

但任何事情更加复杂,似乎什么都不返回或者根本没有

{ "request.0.url": { $exists: true } } 

{ "request.0.url": /.*man.*/i }   

运行。如果我导出此数据,并将其导入到我的本地MongoDB中,我确实能够对数据进行搜查问题没有问题。

任何想法,我可以执行这种类型的搜索有关的数据,而无需导出?

(这是一个编程的问题,因为我想要做上述的Python程序!)

+0

尝试数组索引语法,以代替'request.0.url',尝试'request [0] [“url”]' –

回答

1

那么它看起来像所有我需要做的是使用$ elemMatch!

{ "request": { $elemMatch: {url:/.*man.*/i } }} 

这是因为我理解推荐的方式,但也'更快'?

+0

酷!很高兴你有它的工作。请记住,如果元素存在但是为空,那么这两种方法都不会陷入这种情况,因此您要么100%确定不会存储空值,要么需要向过滤器添加一个子句来检查这一点。 –