2011-02-01 81 views
2

我有一個蒙戈查詢如下所示:

{'schedule': {'$elemMatch': {'time': {'$gt': start, '$lte': end}}}} 

其搜索集合爲他的「時間表」字段(這是對象的列表)的項目包含一個元素,其「時間」字段在開始和結束之間。

我不清楚mongo的索引如何處理這種情況,並想知道如果這個查詢定期發生,最佳做法是什麼?

回答

0

這是錯誤的語法,但應該工作。當一個對象中有多個字段(特別是數組)需要匹配時,使用$ elemMatch。只需一個字段就不需要$ elemMatch。

你應該這樣做:

{"schedule.time" : { $gt: <start>, $lte: <end> }}

這是更清楚,你使用的是單場,即使它會在多個數組元素,在這種情況下。 「schedule.time」上的索引可用於此查詢以提高效率。

+0

好點。我不認爲這會起作用,因爲如果日程安排是一個整數列表而不是對象列表,並且您沒有{'schedule':{'$ gt':start,'$ lte':end}},它會匹配所有同時具有元素>開始和元素<=結束的項目,但不一定是相同的元素。我檢查了你的版本,並且更清晰。謝謝。 – 2011-02-01 17:59:44