Printemps de Données MongoDB Date entre les deux Dates
je suis à l'aide de Données du Printemps pour MongoDB et a obtenu les classes suivantes
class A {
List<B> b;
}
class B {
Date startDate;
Date endDate;
}
lorsque j'enregistre un objet d'Une il obtient persisté comme
{
"_id" : "DQDVDE000VFP8E39",
"b" : [
{
"startDate" : ISODate("2009-10-05T22:00:00Z"),
"endDate" : ISODate("2009-10-29T23:00:00Z")
},
{
"startDate" : ISODate("2009-11-01T23:00:00Z"),
"endDate" : ISODate("2009-12-30T23:00:00Z")
}
]
}
Maintenant, je veux interroger la base de données pour les documents correspondant à des entrées dans b dans les cas où une date est entre startDate et endDate.
Query query = new Query(Criteria.where("b").elemMatch(
Criteria.where("startDate").gte(date)
.and("endDate").lte(date)
);
Qui résultats dans la suite de mongo requête:
{
"b": {
"$elemMatch": {
"startDate" : { "$gte" : { "$date" : "2009-11-03T23:00:00.000Z"}},
"endDate" : { "$lte" : { "$date" : "2009-11-03T23:00:00.000Z"}}
}
}
}
mais ne retourne pas les documents afférents. Quelqu'un sait ce que je fais mal? Je ne comprends pas...
Je vous remercie beaucoup d'avance!!!!
Ce qui est
Oui, il ne correspond pas à la source de Données requête, qui est également incorrect. Vous devez être où l'interrogation("b"), pas là("un").
Je suis désolé les gars, c'est hier en fin d'. J'ai enlevé les deux copy n paste erreurs!
Le seul document que vous montrez n'est pas satisfaire à la requête, il y a d'autres qui le font? Si votre
la version de printemps de données mongodb utilisez-vous?
"margins"
dans cette mongo requête? C'est que quelque chose de spécifique pour le pilote Java? Je ne vois pas ce que n'importe où dans vos données.Oui, il ne correspond pas à la source de Données requête, qui est également incorrect. Vous devez être où l'interrogation("b"), pas là("un").
Je suis désolé les gars, c'est hier en fin d'. J'ai enlevé les deux copy n paste erreurs!
Le seul document que vous montrez n'est pas satisfaire à la requête, il y a d'autres qui le font? Si votre
$gte
et $lte
termes inversés.la version de printemps de données mongodb utilisez-vous?
OriginalL'auteur sics | 2012-09-06
Vous devez vous connecter pour publier un commentaire.
Si vous voulez trouver des docs où
date
est entre lesstartDate
etendDate
d'unb
élément de tableau, alors vous devez annuler votregte
etlte
appels:côté question - comment voulez-vous index avec la
startDate
etendDate
champs? Ma compréhension est que, lors de l'indexation, le champ "domaine" est placé en dernier dans l'enceinte de l'index. Exemple: "Rechercher tous les hommes âgés entre 50 et 75". Avecgender
etage
champs, vous pouviez faire un index composé surgender-age
. (cookbook.mongodb.org/patterns/date_range )OriginalL'auteur JohnnyHK
OriginalL'auteur Simon Liu