MongoDB: Filialdokument in Array Matching-Parametern suchen

In MongoDB möchte ich ein Dokument finden, das auf den Werten eines Filialdokuments basiert, das bestimmte Parameter erfüllt. Insbesondere habe ich ein Dokument wie folgt aufgebaut:

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

Wie kann ich MongoDB anweisen, mein Dokument nur dann zurückzugeben, wenn die Startzeit für ein Daten-Filialdokument kleiner als 5 und die Endzeit für dasselbe Filialdokument größer als 5 ist? Derzeit, wenn ich es tue

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

Es gibt mein Dokument immer zurück, weil 5 größer als 0 und kleiner als 18 ist. Wie kann ich MongoDB anweisen, mein Dokument nur dann zurückzugeben, wenn 5 (oder welcher Wert auch immer) größer als 0 und kleiner als 2 oder größer als 15 und kleiner als 18 ist ?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage