MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Trouver des objets entre deux dates MongoDB

Requête sur une plage de dates (mois ou jour spécifique) dans le MongoDB Cookbook a une très bonne explication sur le sujet, mais ci-dessous est quelque chose que j'ai essayé moi-même et cela semble fonctionner.

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)" }

Sur la base de mes expériences, vous devrez sérialiser vos dates dans un format pris en charge par MongoDB, car les éléments suivants ont donné des résultats de recherche indésirables.

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" }

Dans le deuxième exemple, aucun résultat n'était attendu, mais il y en avait quand même un obtenu. C'est parce qu'une comparaison de chaînes de base est effectuée.