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

Mongoengineで値としてキーを使用する

    Mongoengineを使用する代わりにPyMongoを直接使用することを検討しましたか? Mongoengineは、ドキュメントのスキーマを宣言および検証するように設計されており、その周りに多くのツールと便利さを提供します。ドキュメントが変わる場合は、Mongoengineが正しい選択かどうかはわかりません。

    ただし、すべてのドキュメントに共通のフィールドがあり、各ドキュメントに固有のフィールドのセットがある場合は、MongoengineのDictFieldを使用できます。 。これの欠点は、たとえば、キーが「トッ​​プレベル」にならないことです。

    class UserThings(Document):
        # you can look this document up by username
        username = StringField()
    
        # you can store whatever you want here
        things = DictField()
    
    dcrosta_things = UserThings(username='dcrosta')
    dcrosta_things.things['foo'] = 'bar'
    dcrosta_things.things['bad'] = 'quack'
    dcrosta_things.save()
    

    結果は次のようなMongoDBドキュメントになります:

    { _id: ObjectId(...),
      _types: ["UserThings"],
      _cls: "UserThings",
      username: "dcrosta",
      things: {
        foo: "bar",
        baz: "quack"
      }
    }
    

    編集: また、「動的」ドキュメント用のMongoengineの開発ブランチで進行中の作業があり、モデルが保存されるときにPythonドキュメントインスタンスの属性が保存されることにも注意してください。 https://github.com/hmarr/mongoengine/pull/112 を参照してください 詳細と歴史について。




    1. ハウツー:CDPデータハブを使用したS3からのデータのインデックス作成

    2. mongoの配列要素を更新します

    3. mongodbサブエレメントクエリ

    4. NodejsMongodbクエリNumberLong