MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Finden Sie Objekte zwischen zwei Daten MongoDB

Abfrage nach einem Datumsbereich (bestimmter Monat oder Tag) im MongoDB Cookbook hat eine sehr gute Erklärung zu diesem Thema, aber unten ist etwas, das ich selbst ausprobiert habe und es scheint zu funktionieren.

items.save({
    name: "example",
    created_at: ISODate("2010-04-30T00:00:00.000Z")
})
items.find({
    created_at: {
        $gte: ISODate("2010-04-29T00:00:00.000Z"),
        $lt: ISODate("2010-05-01T00:00:00.000Z")
    }
})
=> { "_id" : ObjectId("4c0791e2b9ec877893f3363b"), "name" : "example", "created_at" : "Sun May 30 2010 00:00:00 GMT+0300 (EEST)" }

Basierend auf meinen Experimenten müssen Sie Ihre Daten in ein Format serialisieren, das von MongoDB unterstützt wird, da das Folgende zu unerwünschten Suchergebnissen führte.

items.save({
    name: "example",
    created_at: "Sun May 30 18.49:00 +0000 2010"
})
items.find({
    created_at: {
        $gte:"Mon May 30 18:47:00 +0000 2015",
        $lt: "Sun May 30 20:40:36 +0000 2010"
    }
})
=> { "_id" : ObjectId("4c079123b9ec877893f33638"), "name" : "example", "created_at" : "Sun May 30 18.49:00 +0000 2010" }

Im zweiten Beispiel wurden keine Ergebnisse erwartet, aber es wurde trotzdem eins bekommen. Dies liegt daran, dass ein einfacher Zeichenfolgenvergleich durchgeführt wird.