我有一个mongo查询,如下所示:
{'schedule': {'$elemMatch': {'time': {'$gt': start, '$lte': end}}}}
在集合中搜索其“计划”字段(对象列表)的项目,该字段包含“时间”字段位于开始和结束之间的元素。
我不清楚mongo的索引是如何处理这种情况的,并且想知道如果这个查询将会定期发生,最佳做法是什么?
答案 0 :(得分:0)
这是错误的语法,但应该有效。如果要匹配的对象(特别是数组中)中有多个字段,则使用$ elemMatch。只需一个字段就不需要$ elemMatch。
你应该这样做:
{"schedule.time" : { $gt: <start>, $lte: <end> }}
更明显的是,您使用单个字段,即使它在多个数组元素中,在这种情况下。关于&#34; schedule.time&#34;的索引可以用于此查询以提高效率。