Posted at

mongo のクエリー発行

More than 3 years have passed since last update.

SimpleNoteの整理中。 内容の正確さは保証しませんが、多分動くと思うよ。


mongoクエリー

db.coll.find(creteria)で強力なクエリーを発行できる。クエリはJSONベースでパラメータを指定。


条件演算子

db.collection.find({ "field" : { $gt: value } } ); // 大きい : field > value 

db.collection.find({ "field" : { $lt: value } } ); // 小さい : field < value
db.collection.find({ "field" : { $gte: value } } ); // 以上 : field >= value
db.collection.find({ "field" : { $lte: value } } ); // 以下 : field <= value
db.collection.find({ "field" : { $ne: value } } ); // 否定 : field != value

db.things.find( { a: { $all: [ 2, 3 ] } } ); //2,3を共にマッチするa要素のみマッチ

db.things.find( { a: { $in: [2,4,6] } } ); //2,3どちらかにマッチするa要素のみマッチ
db.things.find( { a: { $nin: [2,4,6] } } ); //2,3どれにもにマッチしないa要素のみマッチ
db.things.find( { a : { $exists : true } } ); // a要素が存在する場合,ドキュメントを返します。


結果項目のフィルタリング

結果項目のフィルタリングを行う場合,findの第二引数を指定する。

 // last_name == 'Smith' なドキュメントのssnを取得

db.users.find({last_name: 'Smith'}, {'ssn': 1});
// すべてのドキュメントから、 thumbnail フィールドを*除いた*もの取得。
db.users.find({}, {thumbnail:0});

フィールドのうち、_id は、明示的に指定しなくても、常に返されます。


結果のソート

// last_nameの昇順で取得する。

db.users.find({}).sort({last_name: 1});

結果をソートする場合,findにsort関数をチェーンする。

ここでsort関数の引数には,ソート対象をキーとし,昇順なら値を1に、降順なら0に指定する。


skipとlimit

db.users.find().skip(20).limit(10);

db.users.find({}, {}, 10, 20); // same as above, but less clear