Посмотрите, что на самом деле дает вам $_POST["number"];
, распечатав это. У меня есть ощущение, что ваша проблема заключается во входных данных. Все эти работы, как и ожидалось:
$collection->insert(array("test"=>"a","float"=>123.45));
$collection->insert(array("test"=>"b","float"=>floatval("123.45")));
$test = array("test"=>"c","float"=>123.45);
$collection->insert($test);
Результат:
db.test.find();
{ "_id" : ObjectId("4f2036a6eabc88dd0e000006"), "test" : "a", "float" : 123.45 }
{ "_id" : ObjectId("4f2036a6eabc88dd0e000007"), "test" : "b", "float" : 123.45 }
{ "_id" : ObjectId("4f2036a6eabc88dd0e000008"), "test" : "c", "float" : 123.45 }
Добавление еще нескольких примеров для целых чисел:
$collection->insert(array("test"=>"inta","int"=>new MongoInt32("12345")));
$collection->insert(array("test"=>"intb","int"=>new MongoInt64("123456789")));
приводит к (по крайней мере, в моей системе):
{ "_id" : ObjectId("4f20431feabc88cf3500001b"), "test" : "inta", "int" : 12345 }
{ "_id" : ObjectId("4f20431feabc88cf3500001c"), "test" : "intb", "int" : NumberLong(123456789) }
Итак, вы должны быть несколько осторожны, если хотите хранить числа как "реальные целые числа" в mongodb.
Обновление
Я был исправлен кем-то в 10gen тем, что целые числа PHP обычно хранятся как целые числа в монго, даже если тип в оболочке показывает Number. Существует также параметр для драйвера PHP mongo, который позволяет вам указать это поведение «native_long». http://php.net/manual/en/mongo.configuration.php