MongoDB: Buscar subdocumento en parámetros de coincidencia de matriz

En MongoDB me gustaría encontrar un documento basado en los valores de un subdocumento que cumpla con ciertos parámetros. Específicamente tengo un documento estructurado así:

{
  name: "test",
  data: [{
    name: "test1",
    start: 0,
    end: 2
  },
  {
    name: "test2",
    start: 15
    end: 18
  }]
}

¿Cómo puedo decirle a MongoDB que solo devuelva mi documento si la hora de inicio para un subdocumento de datos es menor que 5 y la hora de finalización para el mismo subdocumento es mayor que 5? Actualmente, si lo hago

db.foo.findOne({
  'data.start': { $lte: 5 },
  'data.end': { $gte: 5 }
})

devolverá mi documento siempre porque 5 es mayor que 0 y menor que 18. ¿Cómo puedo decirle a MongoDB que solo devuelva mi documento si 5 (o cualquier valor) es mayor que 0 y menor que 2 O mayor que 15 y menor que 18? ?

Respuestas a la pregunta(2)

Su respuesta a la pregunta