MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Вграждане на отговори на съобщения в родител на съобщение с mongodb, използвайки mongoid

Дали това е най-добрата практика или не е много дискусионна тема. Например, трябва да имате предвид ограничението за размера на обекта (в момента 4 MB, но скоро ще се увеличи).

що се отнася до вашия въпрос:предлагам ви да промените

  embeds_many :replies, :class_name => 'Message'
  embedded_in :message, :inverse_of => :replies

към

  embeds_many :replies, :class_name => 'Message'
  referenced_in :message

Освен това ще трябва да посочите двете връзки ръчно (това не би трябвало да е проблем, тъй като те вероятно са неизменни така или иначе).

irb(main):002:0> msg1 = Message.new :subject => 'new question'
=> #<Message _id: 4cc7699f457601d7e8000001, created_at: nil, body: nil, updated_at: nil, subject: "new question", read_at: nil, sender_deleted: false, message_id: nil, recipient_deleted: false>
irb(main):003:0> msg2 = Message.new :subject => 'first comment'
=> #<Message _id: 4cc769b6457601d7e8000002, created_at: nil, body: nil, updated_at: nil, subject: "first comment", read_at: nil, sender_deleted: false, message_id: nil, recipient_deleted: false>
irb(main):005:0> msg2.message = msg1
=> #<Message _id: 4cc7699f457601d7e8000001, created_at: nil, body: nil, updated_at: nil, subject: "new question", read_at: nil, sender_deleted: false, message_id: nil, recipient_deleted: false>
irb(main):007:0> msg1.replies << msg2
=> [#<Message _id: 4cc769b6457601d7e8000002, created_at: nil, body: nil, updated_at: nil, subject: "first comment", read_at: nil, sender_deleted: false, message_id: BSON::ObjectId('4cc7699f457601d7e8000001'), recipient_deleted: false>]
irb(main):008:0> msg1.save
=> true



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Внедряване на пълнотекстово търсене на MongoDB 2.4 в приложение Meteor

  2. Слушайте събития за повторно свързване в драйвера на MongoDB

  3. Как да запиша файл в MongoDB?

  4. MongoDB геопространствена разлика между $near и $within

  5. Статус 500 Вътрешна сървърна грешка в IE-11 с Angular Js приложение