MongoDB $ elemMatch Index

时间:2011-02-01 17:32:25

标签: optimization mongodb indexing

我有一个mongo查询,如下所示:

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

在集合中搜索其“计划”字段(对象列表)的项目,该字段包含“时间”字段位于开始和结束之间的元素。

我不清楚mongo的索引是如何处理这种情况的,并且想知道如果这个查询将会定期发生,最佳做法是什么?

1 个答案:

答案 0 :(得分:0)

这是错误的语法,但应该有效。如果要匹配的对象(特别是数组中)中有多个字段,则使用$ elemMatch。只需一个字段就不需要$ elemMatch。

你应该这样做:

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

更明显的是,您使用单个字段,即使它在多个数组元素中,在这种情况下。关于&#34; schedule.time&#34;的索引可以用于此查询以提高效率。