Overview
このガイドでは、Mongoid でクエリからデータを永続化する方法を学びます。 Mongoid は、基準に基づいた永続化操作を 限定的なキャパシティーでサポートしており、複数のドキュメントの挿入、アップデート、削除操作を表現力豊かに実行できるようにします。
フィルタ条件の作成の詳細については、「 ドキュメントクエリの指定 」ガイドを参照してください。
永続性メソッド
このセクションでは、クエリに連結してMongoDBコレクション内のデータを作成、アップデート、削除する方法について説明します。
ドキュメントの作成
クエリ条件から新しいドキュメントを作成するには、次の方法を使用できます。
create
: モデルインスタンスをMongoDBに保存例:
Band.where(name: 'Daft Punk').create
create!
: モデルインスタンスをMongoDBに保存するか、検証エラーが発生した場合は例外を発生させます例:
Band.where(name: 'Daft Punk').create!
build
: 保存されていないモデルインスタンスを作成します例:
Band.where(name: 'Daft Punk').build
new
: 保存されていないモデルインスタンスを作成します例:
Band.where(name: 'Daft Punk').new
Update Documents
クエリ条件に基づいてドキュメントを更新するには、次の方法を使用できます。
update
: 最初に一致するドキュメントの属性を更新します例:
Band.where(name: 'Sundown').update(label: 'ABC Records')
update_all
: 一致するすべてのドキュメントの属性を更新します例:
Band.where(country: 'Canada').update_all(label: 'ABC Records')
add_to_set
: 一致するすべてのドキュメント内の指定された配列に値を追加します例:
Band.where(name: 'Sun Down').add_to_set(label: 'ABC Records')
bit
:フィールドのビット単位の更新を実行例:
Band.where(name: 'Sun Down').bit(likes: { and: 14, or: 4 })
inc
:フィールドの値を増加させます例:
Band.where(name: 'Sun Down').inc(likes: 14)
pop
: 配列フィールドの最初または最後の要素を削除します例:
Band.where(name: 'Sun Down').pop(members: -1)
pull
: 配列フィールドから指定された条件に一致する値のすべてのインスタンスを削除します例:
Band.where(name: 'Sun Down').pull(members: 'Jonah Larsen')
pull_all
: 配列フィールドから指定された値のすべてのインスタンスを削除します例:
Band.where(name: 'Sun Down').pull_all(:members, [ 'Jonah Larsen', 'Dan Jones' ])
push
: 指定した値を配列フィールドに追加します例:
Band.where(name: 'Sun Down').push(members: 'Jonah Larsen')
push_all
: 配列フィールドで$each
演算子を使用して指定された値を追加します例:
Band.where(name: 'Sun Down').push_all(members: [ 'Jonah Larsen', 'Dan Jones' ])
rename
: 一致するすべてのドキュメントのフィールドを変更します例:
Band.where(name: 'Sun Down').rename(name: :title)
set
: 一致するすべてのドキュメント内の指定されたフィールドに新しい値を設定します例:
Band.where(name: 'Sun Down').set(likes: 10000)
unset
: 一致するすべてのドキュメント内の特定のフィールドを削除例:
Band.where(name: 'Sun Down').unset(:likes)
Delete Documents
クエリ条件に基づいてドキュメントを削除するには、次のメソッドを使用できます。
delete
: 一致するドキュメントをすべて削除します。例:
Band.where(label: 'ABC Records').delete
destroy
: コールバックの実行中中に一致するすべてのドキュメントを削除します。 このメソッドは、すべてのドキュメントをメモリにロードします。例:
Band.where(label: 'ABC Records').destroy
詳細情報
永続性ターゲットをカスタマイズする方法については、「 永続性構成ガイド 」を参照してください。