MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Bản đồ MongoDB ()

Trong MongoDB, cursor.map() phương thức áp dụng một hàm cho mỗi tài liệu được con trỏ truy cập và kết hợp các giá trị trả về trong một mảng.

Cú pháp

Cú pháp như sau:

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

Nơi collection là tên của bộ sưu tập chứa các tài liệu.

<function> ở đâu là chức năng áp dụng cho mỗi tài liệu mà con trỏ truy cập.

Ví dụ

Giả sử chúng ta có một bộ sưu tập được gọi là products chứa ba tài liệu sau:

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

Chúng ta có thể sử dụng map() kết hợp với find() để lặp lại các tài liệu đó trong khi áp dụng một hàm cho mỗi tài liệu.

Ví dụ:

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

Kết quả:

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

Trong trường hợp này, chúng tôi đã lặp lại qua con trỏ và thay thế các bản sao của chuỗi Left với Right . Sau đó chúng tôi trả kết quả.

Kết quả được trả về dưới dạng một mảng.

Lỗi?

Nếu bạn gặp lỗi, như sau:

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

Đảm bảo rằng bạn đang sử dụng find() chứ không phải findOne() .

findOne() phương thức trả về tài liệu thực chứ không phải con trỏ. Do đó, map() sẽ không hoạt động với findOne() . Ngoài ra, ngay cả khi nó hoạt động, findOne() chỉ trả về một tài liệu duy nhất và do đó, sẽ không cần phải lặp lại nhiều tài liệu.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Có cách nào để cập nhật nguyên tử hai bộ sưu tập trong MongoDB không?

  2. UnhandledPromiseRejectionWarning:MongooseServerSelectionError

  3. MongoDB forEach ()

  4. Chèn / cập nhật hàng loạt bằng Mongoid?

  5. Sự khác biệt giữa id và _id trong mongoose là gì?