Mongo DB: ドキュメントの検索

db.collection.find(criteria);

criteria には複雑なオブジェクトを設定する事が出来る。

$gt – 比較演算子 >
$gte – 比較演算子 >=
$lt – 比較演算子 <
$lte – 比較演算子 <=
$ne – 比較演算子 !=
$and – 複数の条件での抽出
$or – 複数の条件での抽出
distinct – 重複を排除して抽出
findOne – 一件のみ抽出
skip – 数件づつ抽出
limit – 件数を制限して抽出
sort – 並び順序を設定して抽出
正規表現も使用可能。

データを用意

> db.artist.insert({name: 'oasis', songs:['wonderwall', 'songbird'], debut:1994});
> db.artist.insert({name: 'blur', songs:['song2', 'parklife'], debut: 1991});

ドキュメント全検索

> db.artist.find();
{ "_id" : ObjectId("532120993a39c815efdbc148"), "name" : "oasis", "songs" : [  "wonderwall",  "songbird" ], "debut" : 1994 }
{ "_id" : ObjectId("5321209a3a39c815efdbc149"), "name" : "blur", "songs" : [  "song2",  "parklife" ], "debut" : 1991 }

ドキュメントの debut == 1991 のものを検索する

> db.artist.find({debut: 1991});
{ "_id" : ObjectId("5321209a3a39c815efdbc149"), "name" : "blur", "songs" : [  "song2",  "parklife" ], "debut" : 1991 }

debut > 1993 のものを検索する (Greater than = $gt を使う)

> db.artist.find({debut: {'$gt': 1993}});
{ "_id" : ObjectId("532120993a39c815efdbc148"), "name" : "oasis", "songs" : [  "wonderwall",  "songbird" ], "debut" : 1994 }

debut < 1993 のもの (Less Than = $lt)

> db.artist.find({debut: {'$lt': 1993}});
{ "_id" : ObjectId("5321209a3a39c815efdbc149"), "name" : "blur", "songs" : [  "song2",  "parklife" ], "debut" : 1991 }

debut >= 1994 のもの (Greater than or equal = $gte)

> db.artist.find({debut: {'$gte': 1994}});
{ "_id" : ObjectId("532120993a39c815efdbc148"), "name" : "oasis", "songs" : [  "wonderwall",  "songbird" ], "debut" : 1994 }

name != ‘oasis’ のもの (Not Equal To = $ne)

> db.artist.find({name: {'$ne': 'oasis'}});
{ "_id" : ObjectId("5321209a3a39c815efdbc149"), "name" : "blur", "songs" : [  "song2",  "parklife" ], "debut" : 1991 }

name が ’oasis’ か ‘blur’ のもの ($in)

> db.artist.find({name: {'$in': ['oasis', 'blur']}});
{ "_id" : ObjectId("532120993a39c815efdbc148"), "name" : "oasis", "songs" : [  "wonderwall",  "songbird" ], "debut" : 1994 }
{ "_id" : ObjectId("5321209a3a39c815efdbc149"), "name" : "blur", "songs" : [  "song2",  "parklife" ], "debut" : 1991 }

一件のみ取得する (findOne)

> db.artist.findOne();
{ "_id" : ObjectId("532120993a39c815efdbc148"), "name" : "oasis", "songs" : [  "wonderwall",  "songbird" ], "debut" : 1994 }