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

Cách trả về mảng chuỗi với tập hợp mongodb

.aggregate() phương thức luôn trả về Objects bất kể bạn làm gì và điều đó không thể thay đổi.

Đối với mục đích của bạn, bạn có lẽ tốt hơn nên sử dụng .distinct() thay vào đó, nó chỉ trả về một mảng các giá trị riêng biệt:

db.users.distinct("emails.address");

Đầu ra chính xác là đầu ra mong muốn của bạn:

["[email protected]","[email protected]","[email protected]"]

Nếu bạn thực sự muốn sử dụng .aggregate() sau đó chuyển đổi thành chỉ các giá trị cần phải xảy ra "bên ngoài" của biểu thức trong quá trình xử lý bài đăng. Và bạn cũng nên sử dụng $unwind khi xử lý các mảng như thế này.

Bạn có thể thực hiện việc này với JavaScript .map() ví dụ:

db.users.aggregate([
    { "$unwind": "$emails" },
    { "$group": { "_id": "$emails.address" } }
]).map(function(el) { return el._id })

Điều này cung cấp cùng một đầu ra, nhưng .map() chuyển đổi phía máy khách thay vì trên máy chủ.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mức độ không an toàn của MongoDB và Cách tránh chúng

  2. Công dụng của Jade hoặc Handlebars khi viết ứng dụng AngularJs

  3. MongoDB không thể khởi động máy chủ:Công cụ lưu trữ mặc định 'wiredTiger' không khả dụng với bản xây dựng mongod này

  4. MongoDB / Meteor / Xuất MONGO_URL sang các ứng dụng đã triển khai

  5. Cập nhật bộ sưu tập sao băng với id truyền thống