【问题标题】:How to convert Mongo ObjectID to String Id while querying documents MongoDB version 3.6.18如何在查询文档时将 Mongo ObjectID 转换为 String Id MongoDB 版本 3.6.18
【发布时间】:2020-05-20 13:46:44
【问题描述】:

我在 MongoDB 中有以下文档。

{
    "_id" : ObjectId("5d5f9a3056be496aec564bca"),
    "field1" : "value1",
    "field2" : "value2",
}

我如何查询这个并将ObjectId 设为String。如下所示

{
    "_id" : "5d5f9a3056be496aec564bca",
    "field1" : "value1",
    "field2" : "value2",
}

【问题讨论】:

    标签: database mongodb grails mongodb-query aggregation-framework


    【解决方案1】:

    您可以使用$toString 运算符来执行此任务。

    db.collection.aggregate([
      {
        $project: {
          _id: {
            $toString: "$_id",
    
          },
          field1: 1,
          field2: 1
        }
      }
    ])
    

    【讨论】:

    • 抱歉忘了说。数据库版本是 3.6.18
    【解决方案2】:

    在 MongoDB 版本上 >= 4.0 - 您可以选择转换字段的类型,在这里您可以使用 $toString 将其转换为字符串:

    db.collection.aggregate([
      /** `$addFields` will overwrite the existing value of field if a field exists with same name,
       *   if not will create a new additional field on doc */
      {
        $addFields: {
          _id: {
            $toString: "$_id"
          }
        }
      }
    ])
    

    测试: mongoplayground

    注意:在低于4.0 的版本中,除非您使用任何代码,否则无法使用MongoDB 查询将ObjectId() 转换为字符串。

    【讨论】:

    • 抱歉忘了说。数据库版本是 3.6.18
    • @ShamnadPS :所以正如我所说,在查询4.0 之前的版本时,无法将ObjectId() 转换为String,但是当您在代码中读取结果时,ObjectId() 不是JSON 的受支持类型默认情况下将转换为字符串!但是在查询中转换是不可能的..
    • 能否请您分享如何执行此操作的参考。
    • 现在我将其作为文档读取并转换为我的对象,其中 Id 为字符串类型,我收到数据对话错误,提示 ObjectID 无法类型转换为字符串
    • @ShamnadPS:你想做什么?您是否正在尝试阅读文档并将ObjectId() 转换为代码中的字符串?
    猜你喜欢
    • 2012-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-08
    • 1970-01-01
    • 1970-01-01
    • 2018-06-24
    • 1970-01-01
    相关资源
    最近更新 更多