Docs Menu
Docs Home
/ /

クエリからのデータの保持

このガイドでは、Mongoid でクエリからデータを永続化する方法を学びます。 Mongoid は、基準に基づいた永続化操作を 限定的なキャパシティーでサポートしており、複数のドキュメントの挿入、アップデート、削除操作を表現力豊かに実行できるようにします。

フィルタ条件の作成の詳細については、「 ドキュメントクエリの指定 」ガイドを参照してください。

CRUD操作の実行の詳細については、 「データ操作の実行」ガイドを参照してください。

このセクションでは、クエリに連結して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: 最初に一致するドキュメントの属性を更新します

    • 例: 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: 一致するドキュメントをすべて削除します。

    • 例: Band.where(label: 'ABC Records').delete

  • destroy: コールバックの実行中中に一致するすべてのドキュメントを削除します。 このメソッドは、すべてのドキュメントをメモリにロードします。

    • 例: Band.where(label: 'ABC Records').destroy

永続性ターゲットをカスタマイズする方法については、「 永続性構成ガイド 」を参照してください。

戻る

スコープ設定

項目一覧