MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak łączyć operatory nie korzystające z narzędzia do tworzenia kryteriów danych wiosennych

Próbowałem twojego mongo powłoki i kodu Java MongoDB Spring. Kod powłoki działa dobrze, ale odpowiadający mu kod Java za pomocą not() nie działa (nie wiem dlaczego).

Oto inny sposób pracy z tą samą funkcjonalnością, której szukasz:

Używam następujących dokumentów wejściowych:

{ _id: 1, createdOn: ISODate("2020-03-21T12:05:00") },
{ _id: 2, createdOn: ISODate("2020-03-28T18:33:00") },
{ _id: 3, createdOn: ISODate("2020-03-24T01:56:00") }

I zakładając dzisiejszą datę :ISODate("2020-03-24T02:50:04.992Z") , wynik powinien wykluczać dokument z _id: 3 , gdzie createdOn jest w dzisiaj .

mongo zapytanie powłoki:

db.collection.find( {
  $or: [
    { createdOn: { $gt: ISODate("2020-03-24T23:59:59.99") } },
    { createdOn: { $lt: ISODate("2020-03-24T00:00:00") } }
  ]
} )

Zwraca dokumenty z _id 1 i 2 (wykluczają dzisiejszą datę).

Odpowiedni kod Java:

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd H:m:s");
Date fromDate = dateFormat.parse("2020-03-24 00:00:00");
Date toDate = dateFormat.parse("2020-03-24 23:59:59");

Criteria c = new Criteria().orOperator(
                           Criteria.where("createdOn").lt(fromDate),
                           Criteria.where("createdOn").gt(toDate) );        
Query q = Query.query(c);

MongoOperations mongoOps = new MongoTemplate(MongoClients.create(), "testDB");
List<Document> result = mongoOps.find(q, Document.class, "collection");
result.forEach(doc -> System.out.println(doc.toJson()));



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Struktura macierzy przyrostu w MongoDb

  2. Aktualizacja wielu dokumentów w manguście jednocześnie

  3. Mongoose wygasa, nieruchomość nie działa prawidłowo

  4. MongoDB:Jak używać jednego schematu jako dokumentu podrzędnego dla różnych kolekcji zdefiniowanych w różnych plikach

  5. jak sprawdzić, czy mongodb działa i jest gotowy do przyjmowania połączeń ze skryptu bash?