Printemps De Données MongoDB Date Entre

j'utilise des données de printemps mongodb.

<!-Je veux les dossiers entre deux dates. La suite de MongoDB Requête fonctionne:

db.posts.find({startDate: {$gte: start, $lt: end}});

ma tentative de traduction du code objet de la requête de données du printemps ne fonctionne pas:

Query query = new Query();
query.addCriteria(Criteria.where("startDate").gte(startDate)
                            .and("startDate").lt(endDate));

Quel est l'ordre correct des appels de méthode pour construire la requête Mongo dont j'ai besoin?

26
demandé sur Patrick M 2012-04-25 11:18:23

5 réponses

N'incluez pas le 'et("date de début")' participer à vos critères.

au Lieu de :

query.addCriteria(Criteria.where("startDate").gte(startDate).and("startDate").lt(endDate));

Vous devez utiliser:

query.addCriteria(Criteria.where("startDate").gte(startDate).lt(endDate));

quand vous incluez la partie' et("startDate")', Mongo le voit comme deux entrées différentes sur la même propriété.

49
répondu Yohan Liyanage 2012-10-29 16:42:19

Référence ici

Query query = new Query(
  Criteria.where("ip").is(ip)
  .andOperator(
    Criteria.where("createdDate").lt(endDate),
    Criteria.where("createdDate").gte(startDate)
  )
);
3
répondu DarwinFernandez 2017-01-30 21:24:49

Cela fonctionne sur la version 2.7.2 du pilote Java

DBCollection coll = db.getCollection("posts");  

BasicDBObject date = new BasicDBObject();
date.append("$gte", new Date(startDate));
date.append("$lte", new Date(endDate));

DBObject query = new BasicDBObject();
query.put("date", date);

DBCursor cursor = coll.find(query);

aussi, pour l'enregistrement, vous avez "startDate" pour les paramètres gte et lte.

2
répondu user1367351 2012-05-01 09:14:47

j'ai dû trouver des dates entre sur le champ publishedDate et voici comment je l'ai fait:

    Criteria publishedDateCriteria = Criteria
                        .where("publishedDateObject").gte(psDate)
                        .lte(peDate);
    Query query = new Query(publishedDateCriteria);
    mongoTemplate.find(query,
                        MyDocumentObject.class));
1
répondu James Jithin 2015-09-27 16:05:33

Cela fonctionne, il est un exemple de code:

Criteria criteria = Criteria.where("pt").gte(startDate)
       .andOperator(Criteria.where("pt").lt(endDate));
0
répondu user2735611 2015-06-08 17:29:17