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

Mongoose cập nhật tài liệu phụ nếu tồn tại

Vì vậy, bạn là một phần của con đường đến đó, nhưng tất nhiên khi bạn không tìm thấy doc thì bạn sẽ không có doc để làm việc với trong cuộc gọi lại. MongoDB có các cách nguyên bản để xử lý các loại cập nhật này, nhưng tất nhiên bạn cần phải kiểm tra đối sánh như bạn đang có.

Những gì chúng ta có thể làm ở đây chỉ là làm việc trong true hoặc false tình trạng tài liệu tồn tại ở đâu.

Xem xét vote.valuetrue của bạn hoặc false cho "ủng hộ"

Nếu bạn thấy rằng có một tài liệu phù hợp, bạn có thể phát hành một bản cập nhật như sau:

Question.update(
  { 
    _id: questionId, 
    "votes.createdBy" vote.createdBy,
    "votes.up": {"$ne": vote.value }
  },
  { $set: { "votes.$.up": vote.value } }
);

Vì vậy, phù hợp và sử dụng vị trí $ toán tử để đảm bảo chỉ mục chính xác của mặt hàng phù hợp được cập nhật. Những gì tôi đã thêm ở đó đảm bảo rằng bạn thậm chí không chạm vào tài liệu có vote.vaule đã có cùng giá trị.

Và trong điều kiện sai, bạn muốn $ push vào mảng có mới mục:

Question.update(
  { 
    _id: questionId
  },
  { 
    $push: { 
      "votes": {
        "up": vote.value,
        "createdBy": vote.createdBy
      }
    }
  }
);

Tất nhiên, hãy thêm chi tiết gọi lại vào nơi writeConcern được áp dụng, mà bạn có thể làm.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongoexport không có trường _id

  2. MongoDB $ acos

  3. Làm cách nào để xóa các bản sao trong MongoDb?

  4. Cách tốt nhất để lưu trữ hình ảnh cho trang web expressjs, mongodb là gì?

  5. Đồng thời - Lấy ID được tạo trong MongoDB của một đối tượng được chèn qua Java theo cách an toàn cho chuỗi