MongoDBへ様々なデータ型を保存/取得してみる。Boolean編
MongoDBへ様々なデータ型を保存/取得してみる。オブジェクトマッピング編 - オープンソースよしみ視点
MongoDBへ様々なデータ型を保存/取得してみる。バイナリ(BINARY)編 - オープンソースよしみ視点
の続きです。
今回はMongoDBのBoolean型についてです。
Mongo ShellからMongoDBのBoolean型の操作
Boolean型として保存するには、true/falseを使います。
注意点としては、true/falseを'(シングルクォート)で囲まないことです。
Type Numberで検索することで、どのデータ型で保存されているかを確認できます。
[root@xxx ~]# mongo --quiet > typeof(true) # typeof(Boolean(1))もboolean trueを返す boolean > typeof(false) # typeof(Boolean(0))もboolean falseを返す boolean > db.boolean_test.insert({x:true}) # Boolean型としてinsert > db.boolean_test.find({x:{$type:8}}) # key=xのvalueがBoolean型のものを検索 { "_id" : ObjectId("4f8541e908b824ae767885e0") } # ヒットする > db.boolean_test2.insert({y:'true'}) # ''で囲むとString型としてinsertされる > db.boolean_test2.find({y:{$type:8}}) # ヒットせず > db.boolean_test2.find({y:{$type:2}}) # key=yのvalueがString型のものを検索 { "_id" : ObjectId("4f85456de04dd3c94a0647e6"), "y" : "true" } # ヒットする
RubyからMongoDBのBoolean型の操作
RubyからはTrueClass、FalseClassを使用します。
require 'gmail' require 'mongo' db_name='test' #MongoDBのデータベース名 coll_name='boolean_test_ruby' # MongoDBのコレクション名 ## 接続処理 db = Mongo::Connection.new.db(db_name) coll = db.collection(coll_name) ## データをinsert ## TrueClassのインスタンスであるtrueオブジェクトを使う ## http://doc.ruby-lang.org/ja/1.9.3/class/TrueClass.html coll.insert({:x => true}) #Boolean型が入る ## FalseClassのインスタンスであるfalseオブジェクトを使う ## http://doc.ruby-lang.org/ja/1.9.3/class/FalseClass.html coll.insert({:x => false}) #Boolean型が入る coll.insert({:x => 'true'}) #String型が入る coll.insert({:x => 'false'}) #String型が入る ## データを取得 db[coll_name].find().each{ |doc| p doc['x'].class } db.connection.close
出力はこうなります。
[root@xxx ~]# ruby mongo_boolean.rb TrueClass # coll.insert({:x => true}) FalseClass # coll.insert({:x => false}) String # coll.insert({:x => 'true'}) String # coll.insert({:x => 'false'})
MongoDBから確認
[root@xxx ~]# mongo --quiet > db.boolean_test_ruby.find() { "_id" : ObjectId("4f854a393e91d83c08000002"), "x" : true } { "_id" : ObjectId("4f854a393e91d83c08000003"), "x" : false } { "_id" : ObjectId("4f854b1a3e91d83cc1000001"), "x" : "true" } { "_id" : ObjectId("4f854b1a3e91d83cc1000002"), "x" : "false" }