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}}}}})