1

1 つのクエリで Mongoid に複数のドキュメントを挿入する方法について、この Stackoverflow の回答を読んでいます。私が読んだ答えから:

batch = [{:name => "mongodb"}, {:name => "mongoid"}]  
Article.collection.insert(batch)

これがどのように機能するかを理解するには、例が必要です。Article クラスがあるとします。

class Article
  include Mongoid::Document
  include Mongoid::Timestamps

  field :subject,   type: String
  field :body,      type: String
  field :remote_id, type: String

  validates_uniqueness_of :remote_id

  belongs_to :news_paper,   :inverse_of => :articles
end

そして、たとえば、記事の配列を作成します。

[ {subject: "Mongoid rocks", body: "It really does", remote_id: "1234", news_paper_id: "abc"},
{subject: "Ruby rocks", body: "It really does", remote_id: "1234", news_paper_id: "abc"},
{subject: "Rails rocks", body: "It really does", remote_id: "5678", news_paper_id: "abc"} ]

それらを作成するにはどうすればよいですか?同時に、同じ2つのremote_idがあることを検証がキャッチするようにしますか?

4

1 に答える 1

1

フィールドに一意のインデックスを追加するremote_idと、MongoDB はこのフィールドの一意性を処理します

index({ remote_id: 1 }, { unique: true })

create_indexes を実行することを忘れないでください:rake db:mongoid:create_indexes

その後はご自由にお使いArticle.collection.insert(batch)ください。

于 2014-03-04T09:18:22.167 に答える