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

Redagowanie w mongodb wydaje mi się niejasne

$redact etap rozpoczyna się od dokumentu głównego i jego pól i tylko wtedy, gdy ten dokument spełnia warunek $$DESCEND , bada poddokumenty zawarte w tym dokumencie. Oznacza to, że pierwszą rzeczą, jaką $redact robi z twoim dokumentem, jest sprawdzenie tego:

{
    "_id" : ObjectId("50b59cd75bed76f46522c34e"),
    "student_id" : 0,
    "class_id" : 2,
    "scores" : [] // Some array. I will look at this later.
}

Nie znajduje nawet type pole tutaj, więc $eq: [ "$type" , "exam" ] to fałsz. Co kazałeś $redact zrobić, gdy warunek jest fałszywy? else: "$$PRUNE" , więc cały dokument jest przycinany przed sprawdzeniem poddokumentów.

Jako obejście sprawdź, czy $type jest albo "exam" lub nie istnieje. Nie prosiłeś wyraźnie o działające rozwiązanie, więc pozostawię to jako ćwiczenie, aby dowiedzieć się, jak to zrobić.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoTemplate metoda lub zapytanie do znalezienia maksymalnych wartości z pola

  2. Polecenie ponownego zindeksowania wszystkich kolekcji mongodb

  3. Znajdowanie osadzonego dokumentu według określonej właściwości w Mongoose, Node.js, MongodDB

  4. Spring Data MongoDB eliminuje POJO

  5. Zapytanie, aby uzyskać wartość, odejmując wartość z bieżącego i następnego dokumentu