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

Mongoose Tìm và Xóa

Như bạn đã lưu ý, việc sử dụng phần sau sẽ không trả lại tài liệu:

Data.find(query).remove().exec(function(err, data) {
  // data will equal the number of docs removed, not the document itself
}

Do đó, bạn không thể lưu tài liệu trong ActionCtrl bằng cách sử dụng phương pháp này.

Bạn có thể đạt được kết quả tương tự bằng cách sử dụng phương pháp ban đầu của mình hoặc sử dụng một số hình thức lặp lại. Thư viện luồng kiểm soát như async có thể hữu ích để xử lý các cuộc gọi không đồng bộ. Nó sẽ không làm giảm mã của bạn, nhưng sẽ giảm các truy vấn. Xem ví dụ:

Data.find(query, function(err, data) {
  async.each(data, function(dataItem, callback) {
    dataItem.remove(function(err, result) {
      ActionCtrl.saveRemove(result, callback);
    });
  });
});

Câu trả lời này giả định rằng ActionCtrl.saveRemove() việc triển khai có thể lấy một tài liệu riêng lẻ làm tham số và có thể thực thi lệnh gọi lại từ async.each vòng. async.each yêu cầu một lệnh gọi lại được chạy mà không có đối số ở cuối mỗi lần lặp, vì vậy lý tưởng nhất là bạn nên chạy lệnh này ở cuối .saveRemove()

Lưu ý rằng remove trên một tài liệu riêng lẻ sẽ thực sự trả về tài liệu đã bị xóa.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Quy tắc đa hóa Mongoose (Nodejs) là gì?

  2. Mongodb trả về nhiều kết quả mảng phụ và loại trừ các kết quả trả về khác

  3. Cách xuất kết quả truy vấn MongoDB sang tệp CSV

  4. Cài đặt plugin bạn bè mongoose với MeanJS

  5. Sự khác biệt giữa kích thước và dung lượng là gì Kích thước được hiển thị bởi hàm Mongo stats ()