1
我有一个像下面的文档。 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
但是antoher元件,我想取回文件仅当from
和to
同一元素符合标准。
我将如何编写查询来实现这一目标?
对不起,没有工作。据我了解,$ elemMatch是用于投影。也就是说,它只影响文档中要返回的字段,而不影响文档是否应返回。查看文档,它只用于find()函数的第二个参数。 – luttkens 2013-05-06 11:58:33
@luttkens'$ elemMatch'也是一个查询操作符。 Docs [here](http://docs.mongodb.org/manual/reference/operator/elemMatch/#op._S_elemMatch)。当你写查询的时候它工作的很好,我想你已经把你的'$ gte'和'$ lte'运算符换成了你真正想要的东西。 – JohnnyHK 2013-05-06 12:21:12
@luttkens:$ elemMatch将工作。 我已经修改了我以前的评论,请检查 – 2013-05-06 12:40:08