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

Mapa MongoDB()

W MongoDB cursor.map() metoda stosuje funkcję do każdego dokumentu odwiedzanego przez kursor i łączy zwracane wartości w tablicę.

Składnia

Składnia wygląda tak:

db.collection.find().map(<function>)

Gdzie kolekcja to nazwa kolekcji, w której znajdują się dokumenty.

A gdzie to funkcja stosowana do każdego dokumentu odwiedzanego przez kursor.

Przykład

Załóżmy, że mamy kolekcję o nazwie produkty który zawiera następujące trzy dokumenty:

{ "_id" : 1, "product" : "Left Handed Screwdriver" }
{ "_id" : 2, "product" : "Left Blinker" }
{ "_id" : 3, "product" : "Long Weight" }

Możemy użyć map() metoda w połączeniu z find() metoda iteracji przez te dokumenty, przy jednoczesnym zastosowaniu funkcji do każdego dokumentu.

Przykład:

db.products.find().map(
  function(p) {
    p = p.product.replace("Left","Right");
    return p;
  }
);

Wynik:

[ "Right Handed Screwdriver", "Right Blinker", "Long Weight" ]

W tym przypadku przeszliśmy przez kursor i zastąpiliśmy instancje ciągu Left z Prawo . Następnie zwróciliśmy wynik.

Wynik jest zwracany jako tablica.

Błąd?

Jeśli pojawi się błąd, taki jak ten:

uncaught exception: TypeError: db.products.findOne(...).map is not a function :
@(shell):1:1

Upewnij się, że używasz find() a nie findOne() .

findOne() Metoda zwraca rzeczywisty dokument, a nie kursor. Dlatego map() nie będzie działać z findOne() . Ponadto, nawet jeśli to zadziałało, findOne() zwraca tylko jeden dokument, a zatem nie ma potrzeby przeglądania wielu dokumentów.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak mogę wyłączyć komunikaty dziennika MongoDB w konsoli?

  2. MongoDB:Jak zaktualizować pojedynczy element podrzędny w tablicy, do którego odwołuje się indeks w tablicy?

  3. Klient MongoDB GUI (wieloplatformowy lub Linux)

  4. mongodb TTL nie usuwa dokumentów

  5. Jak sprawdzić, czy indeks jest używany?