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

MongoDB:wysyłanie zapytań do wielu kolekcji za pomocą dwóch zapytań?

Próba „stworzenia „relacyjnego” zapytania” w MongoDB będzie ćwiczeniem frustracji. Twój schemat przechowuje niektóre informacje (ocena wpisu) w jednej kolekcji, a inne informacje (wiek autora) w innej kolekcji, ale wszystkie zapytania MongoDB działają na pojedynczych kolekcjach. O ile nie zdenormalizujesz swoich danych (czego nie chcesz robić), będziesz potrzebować dwuprzebiegowej metody, aby to zadziałało.

Podejście, które powinno zadziałać, polegałoby na zbudowaniu tablicy identyfikatorów autorów i użyciu jej w zapytaniu kolekcji postów za pomocą „$in”. Oto jak może wyglądać w JavaScript przy użyciu powłoki mongo:

> var authorList = [];
> var authorCursor = db.authors.find({age:{$gt:19,$lt:25}},{"_id":1});
> while(authorCursor.hasNext()){authorList.push(authorCursor.next()["_id"])};
> db.posts.find({"author.$id":{$in:authorList},rating:{$gt:6,$lt:9}});

Pierwszy wiersz tworzy pustą tablicę. Druga linia tworzy kursor, który wybierze _id pola wszystkich autorów w docelowym przedziale wiekowym. Trzecia linia używa kursora do wypełnienia tablicy autora _id s. Czwarta linia wyświetla wszystkie posty, które pasują do Twoich kryteriów docelowych:autor _id na liście po prostu budujemy i oceniamy w określonym przez Ciebie zakresie.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Operatory MongoDB $gt/$lt z cenami przechowywanymi w postaci ciągów

  2. Sprawdź, czy ktoś ma urodziny w ciągu najbliższych 30 dni z mongo

  3. Jak zdobyć najnowsze rekordy N każdej grupy w mongodb?

  4. Tworzenie obiektu BSON z ciągu JSON

  5. ogranicz i posortuj każdą grupę według w mongoDB za pomocą agregacji