【问题标题】:How to convert objectid to string如何将objectid转换为字符串
【发布时间】:2014-12-08 19:45:06
【问题描述】:

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

我看到文档,上面写着ObjectId.toString()ObjectId.valueOf()

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

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

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

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

【问题讨论】:

  • 我用str(ObjectId) 做到了。效果很好。

标签: pymongo objectid


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    检查这个link

    【讨论】:

      【解决方案3】:

      对我有用的是“清理”输出,这样 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")
      

      【讨论】:

        【解决方案4】:

        使用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) }
        

        【讨论】:

          猜你喜欢
          • 2022-01-02
          • 1970-01-01
          • 1970-01-01
          • 2011-12-11
          • 2018-11-09
          • 1970-01-01
          • 2017-11-04
          • 2017-03-11
          • 2014-04-20
          相关资源
          最近更新 更多