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

MongoAlchemyクエリ埋め込みドキュメント

    Mongoは、サブドキュメントの返送をサポートしていません。 $ elemMatchを使用してフィルタリングし、一致する属性を持つドキュメントのみが返されるようにすることができますが、コメントを自分で取得する必要があります。次のようにコメントフィールドを返すだけで、わずかに最適化できます。

    query = Book.query.filter({Book.comments:{'$elemMatch':{Comment.user_id:'user_c'}}})
    query = query.fields(Book.comments.elem_match({Comment.user_id:'user_c'}))
    result = query.limit(1).first()
    print 'query result:', result.comments
    

    0.14.3(数分前にリリースしたばかり)までは、results.commentsが機能しなくなるバグがあったことに注意してください。

    もう1つの非常に重要な注意事項 私がそこで行っているelem_matchは、最初に一致する要素のみを返すということです。一致するすべての要素が必要な場合は、自分でフィルタリングする必要があります:

    query = Book.query.filter({Book.comments:{'$elemMatch':{Comment.user_id:'user_c'}}})
    result = query.limit(1).first()
    print 'query result:', [c for c in result.comments if c.user_id == 'user_c']
    



    1. 同期メソッド用のStackExchange.RedisConnectionMultiplexerプール

    2. MongoDBの一括更新/アップサート?

    3. Mongooseクエリの実行後にコールバック関数が呼び出されることはありません

    4. マングースインスタンスメソッド`this`はモデルを参照していません