Je ne semble pas être en mesure de faire fonctionner même la requête de date la plus élémentaire dans MongoDB. Avec un document qui ressemble à ceci:
{
"_id" : "foobar/201310",
"ap" : "foobar",
"dt" : ISODate("2013-10-01T00:00:00.000Z"),
"tl" : 375439
}
Et une requête qui ressemble à ceci:
{
"dt" : {
"$gte" : {
"$date" : "2013-10-01T00:00:00.000Z"
}
}
}
J'obtiens 0 résultat en exécutant:
db.mycollection.find({
"dt" : { "$gte" : { "$date" : "2013-10-01T00:00:00.000Z"}}
})
Une idée pourquoi cela ne fonctionne pas?
Pour référence, cette requête est produite par MongoTemplate de Spring, donc je n'ai pas de contrôle direct sur la requête qui est finalement envoyée à MongoDB.
(PS)
> db.version()
2.4.7
Merci!
Query
objet au printemps. La forme sérialisée de la requête n'est pas nécessairement une requête valide que vous pouvez simplement copier / coller dans un shell mongo, ce qui en soi est assez frustrant. Le coupable est ici: grepcode.com/file/repo1.maven.org/maven2/org.mongodb/…new Date('2016-03-09')
àISODate('2016-03-09')
. Le premier renverrait des dates dans le passé pour une$gte
requête.À partir des commentaires de la page du livre de recettes MongoDB :
Cela a fonctionné pour moi. Dans le contexte complet, la commande suivante récupère tous les enregistrements où le
dt
champ de date a une date sur 2013-10-01 (AAAA-MM-JJ) Zulu:la source
datetime.datetime
équivaut àISODate
.Essaye ça:
la source
J'utilise robomongo comme interface graphique client mongodb et ce qui suit a fonctionné pour moi
Du côté de l'application, j'utilise le pilote basé sur nodejs mongodb (v1.4.3), l'application utilise datepicker dans l'interface utilisateur qui donne la date comme YYYY-mm-dd, ceci est ensuite ajouté avec l'heure par défaut comme 00:00:00 puis donné au
new Date()
constructeur et ensuite fourni à l'objet de critères mongodb, je pense que le pilote convertit la date en date ISO et la requête fonctionne alors et donne la sortie souhaitée, mais le mêmenew Date()
constructeur ne fonctionne pas ou n'affiche pas la même sortie sur robo mongo, pour le même critères, ce qui est bizarre, car j'ai utilisé robomongo pour recouper mes objets critères.Alors que le cli mongoshell par défaut fonctionne bien avec
ISODate
etnew Date()
la source
En mode strict json, vous devrez garder l'ordre:
Seule chose qui a fonctionné pour définir mes requêtes de recherche sur mlab.com.
la source
Dans le shell MongoDB:
Dans mon code nodeJS (en utilisant Mongoose)
J'interroge ma collection d'événements de capteur pour renvoyer des valeurs où le champ «de» est supérieur à la date donnée
la source
c'est mon document
maintenant je veux trouver tous les 27 documents de date, donc j'ai utilisé ceci ...
cela a fonctionné pour moi.
la source
Cela a fonctionné pour moi en recherchant une valeur inférieure ou égale à maintenant:
la source
Enveloppez-le avec
new Date()
:la source
Ancienne question, mais toujours le premier hit google, alors je la poste ici pour la retrouver plus facilement ...
En utilisant Mongo 4.2 et un agrégat ():
Celui-ci vous donne la variable groupby en tant que date, parfois mieux à utiliser comme composants eux-mêmes.
la source