mongoシェルの上から適当にinsertすると、デフォルトで数値はすべて double になる。なってしまう。
整数を入れたいときは NumberInt() を使う
db.hoge.insert( {a:1} )
db.hoge.insert( {a:NumberInt(2)} )
db.hoge.insert( {a:NumberLong(3)} )
db.hoge.insert( {a:4.0} )
db.hoge.insert( {a:5.1} )
このように入れた場合、mongoシェル上でのfind()の結果は次の通り:
> db.hoge.find()
{ "_id" : ObjectId("6011329ea6c1088a137f39e7"), "a" : 1 }
{ "_id" : ObjectId("601132a3a6c1088a137f39e8"), "a" : 2 }
{ "_id" : ObjectId("601132a6a6c1088a137f39e9"), "a" : NumberLong(3) }
{ "_id" : ObjectId("601132eca6c1088a137f39ea"), "a" : 4 }
{ "_id" : ObjectId("601132efa6c1088a137f39eb"), "a" : 5.1 }
整数と実数の区別がつかないので、なんかもう 型で検索して確認するしかない
> db.hoge.find({a: {$type:"int"}})
{ "_id" : ObjectId("601132a3a6c1088a137f39e8"), "a" : 2 }
> db.hoge.find({a: {$type:"long"}})
{ "_id" : ObjectId("601132a6a6c1088a137f39e9"), "a" : NumberLong(3) }
> db.hoge.find({a: {$type:"double"}})
{ "_id" : ObjectId("6011329ea6c1088a137f39e7"), "a" : 1 }
{ "_id" : ObjectId("601132eca6c1088a137f39ea"), "a" : 4 }
{ "_id" : ObjectId("601132efa6c1088a137f39eb"), "a" : 5.1 }