2015-09-03 mongodb
length を使う場合と、正規表現を使う場合の2パターンある。
以下のような collection があると仮定して、
{ { "a" : "こんにちは" }, { "a" : "私は" }, { "a" : "元気です" }, { "a" : "それでは" }, { "a" : "さようなら" } }
カラム a の文字数が「4」の document を検索する場合は以下のようにする。
> db.collection.find( {$where:"this.a.length===4"} ); { "_id" : ObjectId("55e7d386062207b5b9dbff25"), "a" : "元気です" } { "_id" : ObjectId("55e7d391062207b5b9dbff26"), "a" : "それでは" } > db.collection.find( { a : /\A.{4}\z/ } ); { "_id" : ObjectId("55e7d386062207b5b9dbff25"), "a" : "元気です" } { "_id" : ObjectId("55e7d391062207b5b9dbff26"), "a" : "それでは" }
「4文字以上」って場合はこんな具合。
> db.collection.find( {$where:"this.a.length >= 4"} ) { "_id" : ObjectId("55e7d36c062207b5b9dbff23"), "a" : "こんにちは" } { "_id" : ObjectId("55e7d386062207b5b9dbff25"), "a" : "元気です" } { "_id" : ObjectId("55e7d391062207b5b9dbff26"), "a" : "それでは" } { "_id" : ObjectId("55e7d543062207b5b9dbff27"), "a" : "さようなら" } > db.collection.find( { a : /\A.{4,}\z/ } ) { "_id" : ObjectId("55e7d36c062207b5b9dbff23"), "a" : "こんにちは" } { "_id" : ObjectId("55e7d386062207b5b9dbff25"), "a" : "元気です" } { "_id" : ObjectId("55e7d391062207b5b9dbff26"), "a" : "それでは" } { "_id" : ObjectId("55e7d543062207b5b9dbff27"), "a" : "さようなら" }