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

Pymongoはサブドキュメントで価値を見つけます

    @AnthonyWinzletによって投稿された回答には、ユーザーコレクション内のすべてのドキュメントを調べて、$lookupを実行する必要があるという欠点があります。 sこれは比較的コストがかかります。したがって、Usersのサイズによって異なります コレクションこれを行う方が速いかもしれません:

    1. users.petにインデックスを付ける およびusers.cardb.users.createIndex({pet: 1, car: 1})
    2. cars.modelにインデックスを付けます :db.cars.createIndex({model: 1})
    3. pets.nameにインデックスを付ける :db.pets.createIndex({name: 1})

    次に、これを簡単に行うことができます:

    1. 一致するすべての"Tesla"のリストを取得します 車:db.cars.find({model: "Tesla"})
    2. 一致するすべての"Mickey"のリストを取得します ペット:db.pets.find({name: "Mickey"})
    3. 関心のあるユーザーを検索します:db.users.find({car: { $in: [<ids from cars query>] }, pet: { $in: [<ids from pets query>] }})

    これは非常に読みやすく、理解しやすいだけでなく、3つのクエリすべてがインデックスで完全にカバーされているため、可能な限り高速であることが期待できます。



    1. mongodbおよび/またはコンボ

    2. mongodbでのOR+Sortクエリの複合インデックス

    3. hadoopのmongo'sout:reduceオプションに相当します

    4. 集約フレームワークmongodbでの$unwindと$textの使用