mongo文件只有键内键,如何查找键范围

时间:2014-11-21 07:31:34

标签: mongodb pymongo

我有一个看起来像这样的文件

{
    "2014" : {
        "11" : {
            "20" : {
                "Counts" : {
                    "c" : 2
                }
            },
            "21" : {
                "Counts" : {
                    "c" : 20
                }
            },
            "22" : {
                "Counts" : {
                    "c" : 27
                }
            }
        }
    },
    "_id" : "53d6883a2dc307560d000004",
    "createdate" : ISODate("2014-11-21T07:15:26.109Z")
}

基本上是对{year {day {count {c = countval}}}年结构进行计数,如何查找日期范围内的数据,例如11月21日至22日之间的返回计数

我试过这样的事情

db.installObjs.find({"2014.11.20.Counts.c":{$ne:null}},{"2014.11.20.Counts.c":1})

但是你可以看到它仅适用于特定日期

1 个答案:

答案 0 :(得分:2)

您可以使用以下模式构建查询。它是一个原生的mongo驱动程序javascript代码,但转换为python应该可以正常工作。

var month = 11;
var range = [20,21,22];
var year = 2014;
var project = {};
var find = {};
range.forEach(function(i){
var str = year+"."+month+"."+i+"."+"Counts"+"."+"c";
find[str] ={"$exists":true};
project[str] = 1;
})
db.collection.find(find,project);