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

mongodbphp-INNERJOINのようなクエリを実行する方法

    MongoDBは結合をサポートしていません。ユーザーをニュースにマッピングしたい場合は、次のようにすることができます

    1)アプリケーション層でこれを行います。ユーザーのリストを取得し、ニュースのリストを取得して、アプリケーションにマップします。これが頻繁に必要な場合、この方法は非常に費用がかかります。

    2)前の手順を頻繁に行う必要がある場合は、ニュース記事がユーザードキュメントと一緒に埋め込みドキュメントとして保存されるように、スキーマを再設計する必要があります。

        {
          "_id": "4ca30373fd0e910ecc000007",
          "login": "user22",
          "pass": "example_pass",
          "date": "2010-09-29"
          "news" : [{  
                       "name": "news 222",
                       "content": "news content 2222",
                       "date": "2010-09-29" 
                    }, 
                    {
                       "name": "news 222",
                       "content": "news content 2222",
                       "date": "2010-09-29"
                    }]
        }
    

    この形式のデータを取得すると、実行しようとしているクエリは暗黙的になります。ただし、このようなスキーマでは分析クエリが困難になることに注意してください。最近追加されたニュース記事やそのようなクエリを取得するには、MapReduceを使用する必要があります。

    最終的に、スキーマ設計とアプリケーションが処理できる非正規化の量は、アプリケーションで実行する予定のクエリの種類によって異なります。

    これらのリンクが役立つ場合があります。http://www.mongodb.org/display/DOCS/Schema+Designhttp://www.blip.tv/file/3704083

    お役に立てば幸いです。



    1. 同じmongodbクエリでGroupbycountとdistinctcountを選択します

    2. MongoDBのデフォルトのデータベースパスは何ですか?

    3. MongoDBのマシンプールとクラウドプロファイル

    4. MongoObjectIdをシリアル化するときにJSON.NETキャストエラー