我正在尝试将id
字符串转换为ObjectId()
我有以下导入:
from pymongo import MongoClient
import pymongo
from bson.objectid import ObjectId
如果我打印:
print(ObjectId(session['id']))
print(ObjectId())
我得到以下内容:
58a09f4255c205690833f9dd
58f7d1606cb710c54a14ae82
预期:
ObjectId("58a09f4255c205690833f9dd")
ObjectId("58f7d1606cb710c54a14ae82")
供参考:
pymongo==3.4.0
bson==0.4.7
我尝试过(没有运气):
import bson
print(bson.ObjectId(session['id']))
print(bson.ObjectId())
答案 0 :(得分:0)
您确实已将转化身份string
转换为ObjectId
。
由于打印功能会将ObjectId
返回到string
类型以便正确打印,而不是打印值本身,请尝试打印该类型。
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'>
因此,您可以在要使用ObjectIds的位置使用var1
和var2
。
答案 1 :(得分:0)
在直接从str
转换为objectid
之前,请尝试使用ObjectId.is_valid
验证objectid
是否为True
返回 if ObjectId(session['id']):
try:
id_object_valid = ObjectId(session['id'])
except (InvalidId, TypeError):
return False
,以便您可以执行某些操作如:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/activity_kurs__chatroom"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.eitisoft.studentexchangecloud.Schulen.GymnasiumZwieselKlassen.GymnasiumZwieselQ11Kurse.Kurs_Chatroom"
android:background="@drawable/test1">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/appbar"
android:fitsSystemWindows="true"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>
<RelativeLayout
android:layout_width="match_parent"
android:id="@+id/relativeLayout"
android:layout_alignParentBottom="true"
android:layout_alignParentStart="true"
android:layout_height="60dp">
<EditText
android:layout_height="wrap_content"
android:inputType="textMultiLine"
android:ems="10"
android:id="@+id/editText9"
android:layout_alignParentBottom="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:hint="Nachricht schreiben"
android:layout_marginLeft="5dp"
android:layout_marginBottom="5dp"
android:layout_marginTop="5dp"
android:layout_width="wrap_content"
android:background="@color/colorPrimary"
android:paddingLeft="8dp"
android:layout_toStartOf="@+id/imageView" />
<ImageView
android:layout_width="50dp"
android:layout_height="wrap_content"
app:srcCompat="@drawable/buttonsend"
android:layout_centerVertical="true"
android:id="@+id/imageView"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:layout_marginRight="10dp"
android:layout_marginLeft="10dp"
android:layout_alignParentEnd="true" />
</RelativeLayout>
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentStart="true"
android:id="@+id/listmessage"
android:layout_below="@+id/appbar"
android:stackFromBottom="true"
android:layout_above="@+id/relativeLayout" />