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

MongoDB nguyên tử findOrCreate:findOne, chèn nếu không tồn tại, nhưng không cập nhật

Bắt đầu với MongoDB 2.4, không còn cần thiết phải dựa vào chỉ mục duy nhất (hoặc bất kỳ giải pháp thay thế nào khác) cho findOrCreate nguyên tử như hoạt động.

Điều này là nhờ vào $setOnInsert toán tử mới cho 2.4, cho phép bạn chỉ định các cập nhật chỉ xảy ra khi chèn tài liệu.

Điều này, kết hợp với upsert , nghĩa là bạn có thể sử dụng findAndModify để đạt được findOrCreate nguyên tử -như hoạt động.

db.collection.findAndModify({
  query: { _id: "some potentially existing id" },
  update: {
    $setOnInsert: { foo: "bar" }
  },
  new: true,   // return new doc if one is upserted
  upsert: true // insert the document if it does not exist
})

Dưới dạng $setOnInsert chỉ ảnh hưởng đến tài liệu được chèn vào, nếu tài liệu hiện có được tìm thấy, sẽ không có sửa đổi nào xảy ra. Nếu không có tài liệu nào tồn tại, nó sẽ bổ sung một tài liệu với _id được chỉ định, sau đó thực hiện bộ chỉ chèn. Trong cả hai trường hợp, tài liệu được trả lại.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Hiển thị chế độ xem HTML cơ bản?

  2. Xóa kiểu xếp tầng trong Mongoose

  3. Tên trường batchSize bị bỏ qua trong Phép chiếu trường

  4. không thể kết nối với máy chủ 127.0.0.1 shell / mongo.js

  5. Sử dụng toán tử $ gte và <e mongo nếu ngày ở định dạng chuỗi trong mongodb