72

ObjectId オブジェクトから文字列文字を取得したい。私はピモンゴを使っています。例: 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 の 16 進エンコード バージョンを取得します。

このリンクを確認してください。

于 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 に答える