sql >> データベース >  >> NoSQL >> MongoDB

Mongoidハッシュフィールド値の設定

    ハッシュフィールドの特徴は、必要なだけ動的にすることができるということです。したがって、コードのバグが原因でDBスキーマが意図しないフィールドで汚染されるのを防ぐために、この機能はデフォルトで無効になっています。

    いいえ、ハッシュに2段階の更新を使用することに固執していません!

    []、[]=はread_attribute()のショートカットです およびwrite_attribute() Mongoid::Attributes::Dynamicを含めない場合に使用する必要があります 。 $setを使用しようとした場合 動的属性を有効にしないと、動的属性が定義済みの属性として表示されないため、メソッドなしのエラーが発生します。

    Mongoid::のソースを読む場合属性::動的 次に、動的属性機能を追加するためにこれが必要であることがわかります。

    Mongoid::Attributes::Dynamicを含めて値を更新するには 次の手順に従う必要があります:

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

    それ以外の場合は、必要に応じてこれを簡単にスキップして、2段階の方法で値を更新できます

    これがあなたの質問に光を当てることを願っています。

    出典:

    RailsMongoid動的フィールド-メソッドエラーなし>

    RailsとMongoidの動的属性



    1. GeojsonファイルをMongoDBにインポートする方法

    2. geoJson座標のマングーススキーマ

    3. キーの存在に応じてredisでハッシュキーの有効期限を設定する方法

    4. mongodbTTLがドキュメントを削除しない