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

Trong mongoDb, làm cách nào để xóa một phần tử mảng theo chỉ mục của nó?

Không có cách nào để kéo / loại bỏ theo chỉ mục mảng. Trên thực tế, đây là một vấn đề mở http://jira.mongodb.org/browse/SERVER-1014, bạn có thể bỏ phiếu cho nó.

Giải pháp là sử dụng $ unset và sau đó là $ pull:

db.lists.update({}, {$unset : {"interests.3" : 1 }}) 
db.lists.update({}, {$pull : {"interests" : null}})

Cập nhật:như đã đề cập trong một số nhận xét, cách tiếp cận này không phải là nguyên tử và có thể gây ra một số điều kiện chạy đua nếu các máy khách khác đọc và / hoặc ghi giữa hai hoạt động. Nếu chúng tôi cần hoạt động là nguyên tử, chúng tôi có thể:

  • Đọc tài liệu từ cơ sở dữ liệu
  • Cập nhật tài liệu và xóa mục trong mảng
  • Thay thế tài liệu trong cơ sở dữ liệu. Để đảm bảo tài liệu không thay đổi kể từ khi chúng tôi đọc nó, chúng tôi có thể sử dụng bản cập nhật nếu mẫu hiện tại được mô tả trong tài liệu mongo


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào để sử dụng biến regex trong truy vấn cho MongoDB

  2. Không thể kết nối với mongodb bằng ip máy

  3. Truy vấn MongoDB / Mongoose vào một ngày cụ thể?

  4. Dịch vụ Mongodb sẽ không bắt đầu

  5. Cài đặt MongoDB trên máy Mac