Firebase OrderByKey mit startAt und endAt liefert falsche Ergebnisse

Ich habe 3 Objekte mit den Schlüsseln, wie es so aussieht:

Sie haben das Format JJJJMMTT. Ich versuche, Daten eines Monats zu erhalten. Aber ich erhalte nicht die gewünschte Ausgabe.

Wenn ich es so abfrage:

var ref = db.child("-KPXECP6a1pXaM4gEYe0");

ref.orderByKey().startAt("20160901").once("value", function (snapshot) {
    console.log("objects: " + snapshot.numChildren());
    snapshot.forEach(function(childSnapshot) {
        console.log(childSnapshot.key);
    });
});

Ich erhalte die folgende Ausgabe:

objects: 3
20160822-KPl446bbdlaiQx6BOPL
20160901-KPl48ID2FuT3tAVf4DW
20160902-KPl4Fr4O28VpsIkB70Z

Wenn ich dies zusammen mit endAt abfrage:

ref.orderByKey().startAt("20160901").endAt("20160932").once("value", function (snapshot) {
    console.log("objects: " + snapshot.numChildren());
    snapshot.forEach(function(childSnapshot) {
        console.log(childSnapshot.key);
    });
});

Ich bekomme das:

objects: 0

Wenn ich am Ende ~ Zeichen benutze,

ref.orderByKey().startAt("20160901").endAt("20160932~").once("value", function (snapshot) {
    console.log("objects: " + snapshot.numChildren());
    snapshot.forEach(function(childSnapshot) {
        console.log(childSnapshot.key);
    });
});

Ich erhalte die Ausgabe:

objects: 3
20160822-KPl446bbdlaiQx6BOPL
20160901-KPl48ID2FuT3tAVf4DW
20160902-KPl4Fr4O28VpsIkB70Z

Gibt es etwas, was ich hier vermisse?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage