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

MongoDB:Xóa một trường khỏi TẤT CẢ các tài liệu con trong một trường mảng

Lý do bạn nhận được lỗi đó là vì bạn không có bất kỳ vị từ nào trong mệnh đề bộ lọc. Bạn có thể làm điều này:

mongos> db.test.update({"messages.id": {$exists: true}}, {$unset: {"messages.$.id":true}}, {multi:true})

Và bạn sẽ không gặp lỗi - trên thực tế, một trong các tài liệu sẽ có id đã xóa thuộc tính. Vấn đề là toán tử vị trí chỉ khớp với phần tử ĐẦU TIÊN của mảng khớp với vị từ của bạn, nó không khớp với tất cả các phần tử. Vấn đề lớn hơn là hiện không thể cập nhật tất cả các phần tử trong một mảng trong MongoDB ( https ://jira.mongodb.org/browse/SERVER-1243 ).

Bạn sẽ cần phải lặp lại từng phần tử trong mảng bằng cách sử dụng vị trí số ("messages.0.id", "messages.1.id", v.v.) hoặc bạn có thể kéo mảng vào ứng dụng của mình, lặp qua và cập nhật chúng, sau đó lưu mảng trở lại.

Bạn có thể thấy từ vé JIRA rằng vấn đề này đã được mở khá lâu nhưng 10gen dường như không coi nó là mức độ ưu tiên cao.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào chúng tôi có thể đưa ra truy vấn cho các tài liệu nhúng thông qua trình điều khiển java?

  2. Nhập tệp CSV (chứa một số ký tự không phải UTF8) trong MongoDb

  3. MongoDB - Chiếu một trường không phải lúc nào cũng tồn tại

  4. Làm thế nào để truy cập phiên bản MongoDB 4.2?

  5. docker-comp chặn đầu ra mongodb