|
based on v23 (2010-10-03更新) - オリジナル MongoDBのすばらしいところの一つとして、ダイナミック(ad-hocな)なクエリーのサポートがあります。これはデータを探すのに特別なindedxとかを必要としません。ユーザは、好きな条件で検索することができます。リレーショナルデータベースでは、ダイナミッククエリーは普通のことです。リレーショナルデータベースからMongoDBに移動する場合に、たくさんのSQLクエリーが簡単にMongoDBのドキュメントベースのクエリー言語に変換できます。 クエリ記述オブジェクトMongoDBは、データ取得のために多くの種類の クエリーオブジェクト をサポートしています。クエリーは、BSONドキュメントで表現します。たとえば、MongoDBシェルを使って、 users コレクションに入っているすべてのドキュメントを取得したいとします。このときクエリーは以下のようになります。 db.users.find({})
このケースでは、コレクション内のすべてのドキュメントにマッチさせたいので、セレクターは空のドキュメントです。次は、条件付きの例です。 db.users.find({'last_name': 'Smith'})
このセレクターは、 last_name が 'Smith' のドキュメントすべてがマッチします。 MongoDBは、幅広く色々なドキュメントセレクターをサポートします。色々な例が、 MongoDB Tutorial または、 高度なクエリー にあります。シェルではなく他の言語から使う場合には、ドライバーのドキュメントを参照してください。 クエリーオプションフォールドの選択上記クエリー表現に加え、MongoDBはいくつかの他の引数を取ります。例えば、特定のフィールドしか返さないようなリクエストです。たとえば、last nameが'Smith'のユーザのsocial security numbers (ssn)だけを取得したい場合、次のようなクエリーをシェルで発行できます。 // last_name == 'Smith' なドキュメントのssnを取得 db.users.find({last_name: 'Smith'}, {'ssn': 1}); // すべてのドキュメントから、 thumbnail フィールドを*除いた*もの取得。 db.users.find({}, {thumbnail:0}); _id は、明示的に指定しなくても、常に返されます。 ソートMongoDBは結果をソートして返すこともできます。すべてのドキュメントを、last nameの昇順でソートして取得するためには、以下のようなクエリーを実行します。 db.users.find({}).sort({last_name: 1});
skip と limitMongoDBは、 skip と limit を簡単なページ制御のためにサポートしています。次の例では、最初の20件をskipし、かつ、結果の件数を10件にlimitします。
db.users.find().skip(20).limit(10);
db.users.find({}, {}, 10, 20); // same as above, but less clear
slaveOkクエリを、レプリカペアまたはレプリカセットで行なう場合、デフォルトではドライバはマスターのmongodにリクエストを送ります。(任意に選ばれた)スレーブでクエリーを実行するには、クエリにslaveOkオプションをつけて実行する必要があります。下記は、シェルでの実行方法です。
db.getMongo().setSlaveOk(); // スレーブでの実行を許可
db.users.find(...)
注意: いくつかのドライバでは、slaveOkオプションをそれぞれのfind()オプションで指定できます。その他のドライバでは、コネクション毎の設定になります。詳細についてはドライバの情報を見てください。 カーソルfind()によって実行されたデータベースクエリーは、技術的には カーソル を返します。カーソル はクエリーによって返されたドキュメントを順番の取得するために使われます。たとえば、 mongoシェル で、次のようにカーソルを使えます。 > var cur = db.example.find(); > cur.forEach( function(x) { print(tojson(x))}); {"n" : 1 , "_id" : "497ce96f395f2f052a494fd4"} {"n" : 2 , "_id" : "497ce971395f2f052a494fd5"} {"n" : 3 , "_id" : "497ce973395f2f052a494fd6"} > 他の情報このドキュメントは、MongoDBのクエリのほんの触りです。全体の詳細については、"クエリー"以下の各サブセクションを右のメニューから選択してください。 クリックリファレンスDownload the Query and Update Modifier Quick Reference Card 参照 |

IF YOU HAVE A QUESTION, POST IT TO THE USER GROUP.
These pages are fine for comments, but for questions, your best bet will always be the MongoDB User Group. blog comments powered by Disqus