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