Как и в приведенном ниже коде, я вставил 4 и 5 в оболочку mongo. PyMongo получает их как 4.0 и 5.0. Я вставляю 7 из PyMongo. PyMongo получает его как 7.int to float conversion in Mongo find
Почему это происходит? Я нахожу это теневым, и я не хочу преследовать тихие производственные неудачи в будущем. < вставить здесь >>
СПОЙЛЕР ПРЕДУПРЕЖДЕНИЕ: Я попытался скрыть информацию, которая может помешать некоторым ученикам. Пожалуйста, будь осторожен.
От Монго:
$:~/dev/mongouniv$ mongo
MongoDB shell version: 2.4.9
connecting to: test
> use m101
switched to db m101
> db.hw1.findOne()
> db.hw1.insert({"key":4})
> db.hw1.insert({"key":5})
> db.hw1.find()
{ "_id" : ObjectId("5566cccaa3e32a78d30eeddc"), "key" : 4 }
{ "_id" : ObjectId("5566ccdda3e32a78d30eeddd"), "key" : 5 }
От Python:
import pymongo
from pymongo import MongoClient
# connect to database
connection = MongoClient('localhost', 27017)
In [20]: connection.m101.hw1.insert({"key":7})
Out[20]: ObjectId('5566ce513b8aa04a7585120f')
In [21]: list(connection.m101.hw1.find())
Out[21]:
[
{u'_id': ObjectId('5566cccaa3e32a78d30eeddc'), u'key': 4.0},
{u'_id': ObjectId('5566ccdda3e32a78d30eeddd'), u'key': 5.0},
{u'_id': ObjectId('5566ce513b8aa04a7585120f'), u'key': 7}]
Версии моих пакетов Ubuntu:
dpkg -s python-pymongo
Version: 2.6.3-1build1
dpkg -s mongodb-server
Version: 1:2.4.9-1ubuntu2
dpkg -s mongodb-clients
Version: 1:2.4.9-1ubuntu2
Итак, когда я вижу 5 в 'find', выводят его значение с плавающей запятой? – aitchnyu
Да, ваши 4 и 5 - это поплавки. Попробуйте ввести одни и те же номера с помощью «NumberInt» - вы должны увидеть разницу – konart
True. Я проверял с помощью 'db.hw1.find ({key: {$ type: 16}})' где ключ - int и 'db.hw1.find ({key: {$ type: 1}})' где ключ поплавок. – aitchnyu