MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB карта()

В MongoDB, cursor.map() методът прилага функция към всеки документ, посетен от курсора, и комбинира върнатите стойности в масив.

Синтаксис

Синтаксисът е така:

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

Където collection е името на колекцията, в която се намират документите.

И къде <function> е функцията, която се прилага към всеки документ, посетен от курсора.

Пример

Да предположим, че имаме колекция, наречена products който съдържа следните три документа:

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

Можем да използваме map() метод във връзка с find() метод за итерация през тези документи, като същевременно се прилага функция към всеки документ.

Пример:

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

Резултат:

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

В този случай повторихме курсора и заменихме екземпляри на низа Left с Right . След това върнахме резултата.

Резултатът се връща като масив.

Грешка?

Ако получите грешка, по следния начин:

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

Уверете се, че използвате find() а не findOne() .

findOne() метод връща действителния документ, а не курсор. Следователно, map() няма да работи с findOne() . Също така, дори и да работи, findOne() връща само един документ и следователно няма да има нужда от повторение през множество документи.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Автоматизиране на разполагане на база данни на MongoDB

  2. Mongoose Schema не е регистриран за модел

  3. Ключови неща за наблюдение в MongoDB

  4. Как да премахнете индекс с помощта на Mongoose

  5. Създадени от MongoDB файлове