簡體   English   中英

pymongo查詢中的long或int是否必須與mongodb中的數字類型匹配?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM