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

đặt giá trị trường băm mongoid

Vấn đề với trường Hash là, nó có thể động bao nhiêu tùy thích. Do đó, để tránh làm ô nhiễm giản đồ DB của bạn với các trường không mong muốn do lỗi trong mã của bạn, chức năng này bị tắt theo mặc định.

Không, bạn hoàn toàn không gặp khó khăn khi sử dụng cập nhật 2 bước cho hàm băm của mình!

[], [] =là các phím tắt cho read_attribute()write_attribute() và sẽ được sử dụng nếu bạn không bao gồm Mongoid::Attributes::Dynamic . Nếu bạn cố gắng sử dụng $set nếu không bật các thuộc tính động, bạn sẽ gặp lỗi không có phương pháp vì nó không xem các thuộc tính động của bạn là các thuộc tính đã xác định.

Nếu bạn sẽ đọc nguồn của Mongoid ::Các thuộc tính ::Động thì bạn sẽ thấy rằng điều này là cần thiết để thêm chức năng thuộc tính động.

Để cập nhật các giá trị bằng cách bao gồm Mongoid::Attributes::Dynamic bạn cần làm theo các bước sau:

thing = Thing.first
thing.set("info.endDate" => Time.now)
thing.reload # This will update the current variable 

Nếu không, nếu cần, bạn có thể dễ dàng bỏ qua bước này và thực hiện cập nhật giá trị bằng phương pháp 2 bước

Tôi hy vọng điều này làm sáng tỏ truy vấn của bạn.

Nguồn:

Rails mongoid các trường động - không có lỗi phương pháp

Thuộc tính động với Rails và Mongoid



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tìm bản ghi cuối cùng của mỗi ngày

  2. Bộ giải mã MongoDB BSON không được sử dụng khi mã hóa đối tượng

  3. Lỗi trường tương tự trong tổng hợp _id

  4. MongoDB:Lựa chọn có điều kiện từ một bộ sưu tập dựa trên một bộ sưu tập khác

  5. Truy vấn một mảng lồng nhau trong MongoDb