72

我想从 ObjectId 对象中获取字符串字符。我使用 pymongo。例如:ObjectId("543b591d91b9e510a06a42e2"),我想得到"543b591d91b9e510a06a42e2"

我看到文档,它说ObjectId.toString()ObjectId.valueOf()

所以我做了这个代码:from bson.objectid import ObjectId.

但是当我使用时ObjectId.valueOf(),它显示:

“ObjectId”对象没有属性“valueOf”。

我怎么才能得到它?谢谢。

4

4 回答 4

114

ObjectId.toString()ObjectId.valueOf()在 Mongo JavaScript API 中。

在 Python API(使用 PyMongo)中,正确的方法是str(object_id)按照您在评论中的建议使用 pythonic,请参阅有关 ObjectId 的文档

于 2015-03-12T09:16:30.777 回答
18

ObjectId.toString() 返回 ObjectId() 对象的字符串表示形式。

在 pymongo str(o) 中,获取 ObjectId o 的十六进制编码版本。

检查此链接

于 2015-03-12T11:49:00.093 回答
2

对我有用的是“清理”输出,这样 Pydantic 就不会从 ObjectId 类型的 _id 中消化不良......这对我有用......我在返回输出之前将 _id 转换为字符串。 ..

# Get One
@router.get("/{id}")
def get_one(id):
    query = {"_id": ObjectId(id)}
    resp = db.my_collection.find_one(query)

    if resp:
        resp['_id'] = str(resp['_id'])
        return resp
    else:
        raise HTTPException(status_code=404, detail=f"Unable to retrieve record")
于 2021-09-09T23:29:51.677 回答
0

使用str(ObjectId),正如@Simon 的评论中已经提到的那样。

@app.route("/api/employee", methods=['POST'])
def create_employee():
    json = request.get_json()
    result = employee.insert_employee(json)
    return { "id": str(result.inserted_id) }
于 2021-08-24T22:49:48.147 回答