[英]Does long or int in pymongo queries have to match the number type in mongodb?
我在pymongo文檔或mongodb文檔中都找不到太多的跡象。 我目前正在使用python3,我有一個程序可以插入數據,而另一個程序可以查詢數據。
基本上,如果一個程序將數據作為BSON long類型(64位)插入,那么另一個程序可以查詢32位int的數據嗎?
例如,我在哪里寫數據。
from bson.int64 import Int64 ... coll.insert({'myval': Int64(100)})
以及我在哪里讀取數據。
coll.find({'myval': int(100)})
不管int有多大,這都行得通嗎? 甚至忽略python3是否將int存儲為64位?
您不必在寫作時將您的號碼手動轉換為bson.int64; pymongo將自動處理此問題。
是的,您可以通過以下方式讀取數據:
coll.find({'myval': int(100)})
或更簡單:
coll.find({'myval': 100})
MongoDB中int64和int32之間的區別更多是關於BSON存儲大小。 您可以使用以下任一類型進行查詢:
Python 3.3.5 (default, Jan 29 2015, 02:00:04)
[GCC 4.9.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pymongo
>>> c = pymongo.MongoClient()
>>> from bson.int64 import Int64
>>> c.test.int64.insert_one({'int64': Int64(2 ** 32)})
<pymongo.results.InsertOneResult object at 0x7f6ece3f43c0>
>>> c.test.int64.find_one({'int64': int(2 ** 32)})
{'int64': 4294967296, '_id': ObjectId('554fa762fa5bd8782e1698ce')}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.