2017-04-19 55 views
-1

我想一個id字符串轉換爲ObjectId()PyMongo:物件()打印字符串,而不是對象

我有以下的進口:

from pymongo import MongoClient 
import pymongo 
from bson.objectid import ObjectId 

如果我打印:

print(ObjectId(session['id'])) 
print(ObjectId()) 

我收到以下內容:

58a09f4255c205690833f9dd 
58f7d1606cb710c54a14ae82 

預計:

ObjectId("58a09f4255c205690833f9dd") 
ObjectId("58f7d1606cb710c54a14ae82") 

FYI:

pymongo==3.4.0 
bson==0.4.7 

我已經試過(沒有運氣):

import bson 
print(bson.ObjectId(session['id'])) 
print(bson.ObjectId()) 
+2

'print'調用'對每個參數str' ,所以'print(ObjectId())'輸出'str(ObjectId())'的結果。你必須調用'repr'(顯式地):'print(repr(ObjectId()))' – vaultah

+0

謝謝 - 合理。 – user3939059

回答

0

您已經將您的ID string轉換爲ObjectId確實如此。 由於打印功能返回您的ObjectIdstring類型爲了正確打印,而不是打印值本身,嘗試打印類型。

var1 = ObjectId(session['id']) 
var2 = ObjectId() 

print(var1) 
print(var2) 
print(type(var1)) 
print(type(var2)) 

返回:

58a09f4255c205690833f9dd 
58f7d1606cb710c54a14ae82 
<class 'bson.objectid.ObjectId'> 
<class 'bson.objectid.ObjectId'> 

所以,你可以在你想用你的ObjectID使用var1var2

0

直接從strobjectid轉換的嘗試之前,你ObjectId.is_valid驗證,如果是驗證海峽爲objectid返回True所以你可以做一些像:

if ObjectId(session['id']): 
     try: 
      id_object_valid = ObjectId(session['id']) 
     except (InvalidId, TypeError): 
      return False 
相關問題