我有一份类似下面的文件。该periods
字段定义用户有权访问某些数据的时间段。
{
"_id":ObjectId("51878ecc0e9528429ab6e7cf"),
"name" : "Peter Flack",
"periods":[
{
"from":1,
"to":2
},
{
"from":4,
"to":6
},
{
"from":10,
"to":12
}
]
}
现在我想确定任意时间段是否在该period
字段的任何时间段内。我尝试了以下方法:
db.subs.find({"periods.from" : {$gte : 1}, "periods.to" : {$lte : 12}, "periods.from" : {$lte : 12}, "periods.to" : {$gte : 1}})
此查询返回文档,因为数组中有一个元素from
>= 1,另一个元素to
<= 12。
from
但是,只有to
在同一元素中的两者都符合条件时,我才想取回文档。
我将如何编写查询来实现这一点?