Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 如何在记录的嵌入文档的时间范围内查找文档?_Mongodb - Fatal编程技术网

Mongodb 如何在记录的嵌入文档的时间范围内查找文档?

Mongodb 如何在记录的嵌入文档的时间范围内查找文档?,mongodb,Mongodb,我有一个类似以下内容的文档: { "_id" : ObjectId("4e5044ecf9d7954533000002"), "events" : [ { "state" : 1, "time" : 1313882989, }, { "time" : 1313883005, "state" : 0, } ]

我有一个类似以下内容的文档:

{ "_id" : ObjectId("4e5044ecf9d7954533000002"), "events" : [
        {
                "state" : 1,
                "time" : 1313882989,
        },
        {
                "time" : 1313883005,
                "state" : 0,
        }
]}
您可以看到事件是一个嵌入文档的数组。状态:1表示文档当时设置为活动(UTC秒),状态:0表示文档当时设置为非活动。这基本上为我提供了该文档处于活动状态的时间范围,从1313882989到1313883005

现在,我正试图确定哪些文档在任何特定时间处于活动状态,比如1313883013,这段时间介于活动和非活动事件之间

我可以通过此查询获得一些信息:

db.plays.find({events:{$elemMatch:{state:1,time:{$lte:1313883013}}}})

它匹配一个完整的嵌入文档,其中state=1,time只是在查询中不包含state:1

根据得到的结果,检查状态0或1的值

db.plays.find({events:{$elemMatch:{state:1,time:{$lte:1313883013}},$not:{$elemMatch:{state:0,time:{$lte:1313883013}}}}})