golang中无法通过ObjectId获取mongodb记录

2023-12-26

我尝试使用以下代码通过 ObjectId 获取 mongodb 记录,但不断获取未找到 by err.Error()

以下是我的 mongo 集合示例

{ "_id" : ObjectId("5a2a75f777e864d018131a59"), "callDate" : "22/12/2017", "time" : "16.25", "callType" : "a", "position" : "aaa", "description" : "aaaaaa", "qty" : 2, "estimatedDuration" : 2.3, "estimatedOvertime" : 3.44, "rate" : 4, "laborExtension" : 3 }
{ "_id" : ObjectId("5a2a75f877e864d018131a5b"), "callDate" : "22/12/2017", "time" : "16.25", "callType" : "a", "position" : "aaa", "description" : "aaaaaa", "qty" : 2, "estimatedDuration" : 2.3, "estimatedOvertime" : 3.44, "rate" : 4, "laborExtension" : 3 }
{ "_id" : ObjectId("5a2a75fa77e864d018131a5d"), "callDate" : "22/12/2017", "time" : "16.25", "callType" : "a", "position" : "aaa", "description" : "aaaaaa", "qty" : 2, "estimatedDuration" : 2.3, "estimatedOvertime" : 3.44, "rate" : 4, "laborExtension" : 3 }

以下是我的模型

type RhinoJobs struct { 
ID                bson.ObjectId  `db:"id" json:"id" bson:"_id"` 
CallDate          string  `db:"call_date" json:"callDate" bson:"callDate"` 
Time              string  `db:"time" json:"time" bson:"time"` 
CallType          string  `db:"call_type" json:"callType" bson:"callType"` 
Position          string  `db:"position" json:"position" bson:"position"` 
Description       string  `db:"description" json:"description" bson:"description"` 
Qty               int     `db:"qty" json:"qty" bson:"qty"` 
EstimatedDuration float64 `db:"estimated_duration" json:"estimatedDuration" bson:"estimatedDuration"` 
EstimatedOvertime float64 `db:"estimated_overtime" json:"estimatedOvertime" bson:"estimatedOvertime"` 
Rate              float64 `db:"rate" json:"rate" bson:"rate"` 
LaborExtension    float64 `db:"labor_extension" json:"laborExtension" bson:"laborExtension"` 
} 

我想通过对象 ID 搜索这些记录

"gopkg.in/mgo.v2"

func GetMongoSession() (*mgo.Session, error) {
    if mgoSession == nil {
        var err error
        mgoSession, err = mgo.Dial(mongoConnectionUrl)
        if err != nil {
            return nil, err
        }
    }
    return mgoSession.Clone(), nil
}



func GetJobByID(objID string) (models.RhinoJobs, error) {
    var job models.RhinoJobs
    s, err := commons.GetMongoSession()
    if err != nil {
        errMsg := "error occurred while creating mongoDB connection stack:" + err.Error()
        print(err.Error())
        return job, errors.New(errMsg)
    }
    defer s.Close()
    err = s.DB("rhino").C("jobs").FindId(bson.ObjectIdHex("5a2a75f777e864d018131a59")).One(&job)
    if err != nil {
        print(err.Error())
        errMsg := "error occurred while getting data :" + err.Error()
        return job, errors.New(errMsg)
    }
    return job, nil
}

但是当我尝试通过以下代码获取所有集合记录时,它工作正常

err := s.DB("rhino").C("jobs").Find(nil).All(&jobs)

我还检查了以下SO Q&A,但没有用

使用存储在数组中的 _id 从 golang 查询 mongodb https://stackoverflow.com/questions/26428281/querying-mongodb-from-golang-using-the-id-stored-in-an-array

如何在golang和mongodb中通过id查找 https://stackoverflow.com/questions/35364816/how-to-find-by-id-in-golang-and-mongodb

无法使用 mgo 和 golang 检索“_id”值 https://stackoverflow.com/questions/20215510/cannot-retrieve-id-value-using-mgo-with-golang


我遇到了完全相同的问题,我的问题是我最近切换到新的 mgo 分支(正在积极开发)并且我混淆了依赖项。

我基本上用过mgo来自 globalsign 与旧版一起bson来自 gopkg.in。请检查您的依赖关系!

"github.com/globalsign/mgo"
"gopkg.in/mgo.v2/bson"

这是错误的!!

相反,它应该是:

"github.com/globalsign/mgo"
"github.com/globalsign/mgo/bson"   
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

golang中无法通过ObjectId获取mongodb记录 的相关文章

随机推荐

  • 通过 .whereArrayContains() 查询时出现意外行为

    我有一个 RecyclerView 它利用 FireaseUI 并通过 时间戳 字段 按顺序 对 轮询 节点中的所有对象进行排序 新片段 onViewCreated Query queryStore FirebaseFirestore ge
  • 从代码隐藏提交表单

    我在 c asp net 应用程序上实现功能时遇到问题 我有一个带有 RadioButtonList 和提交按钮的表单 RadioButtonList 生成于Page Load 从我从数据库检索的对象列表中 如果列表中只有 1 个对象 我想
  • SQL 和 where 子句中的 NULL 值

    所以我有一个简单的查询 返回产品列表 SELECT Model CategoryID FROM Products WHERE Model 010 00749 01 这返回 010 00749 01 00000000 0000 0000 00
  • 如何在 Haskell 中实现二进制数

    我看到了以下教堂数字的数据构造函数 data Nat Zero Succ Nat deriving Show 但这是一元数 我们如何以这种方式在 Haskell 中实现二进制数的数据构造函数 我已经尝试过这个 data Bin Zero O
  • React-Native WebView 嵌入 YouTube 视频在 Android 中没有全屏选项

    我正在尝试将 YouTube 视频嵌入到我的 React Native 应用程序中 它工作正常 但我无法获得这些视频的全屏按钮 功能 这是我的代码
  • 您已经拥有当前的 iOS 开发证书或待处理的证书请求

    我安装了新的 OSX High Siera 问题 所有已安装的证书均已删除 所以我使用本地计算机签名证书创建了新的分发证书 并将其下载并安装到计算机中 当我运行项目或它给出错误 我尝试了 stackOverflow 中找到的所有步骤 但无法
  • C# 中的 JOptionPane 等效项?

    在 Java 中 标准 Swing 库中有一个有用的类 称为 JOptionPane 它提供了一堆预制但可自定义的窗口 用于显示消息和获取 简单 用户输入 我知道有 MessageBox Show 可以在 C 中向用户显示 是 否 取消 类
  • 如何在项目范围内使用 Kotlin ExperimentalUnsignedTypes (AndroidStudio)

    我正在尝试使用 ExperimentalUnsignedTypes在我的 Android Studio 项目中 看来我必须把它放在任何地方 所以我宁愿在项目范围内设置它 文档 https kotlinlang org api latest
  • 如何在 git 中执行“hg mv --after”?

    我在 git 之外重命名了一些文件并对其进行了大量修改 当我跑步时git diff index M name status HEAD我只看到 4 个文件被重命名 移动 而实际上应该更多 我知道我可以使用 Mercurial 记录事后移动hg
  • 如何自动安装 Xcode?

    我正在尝试编写一个 shell 脚本 将我们所有的开发工具和依赖项安装到干净的 OSX 机器上 有谁知道自动化安装 Xcode 的最佳方法吗 我这样做是为了 记录开发环境 加快新开发人员的入职流程 遵循一切自动化原则 全自动 Xcode 安
  • 在 tkinter 打开文件弹出窗口中指定“此电脑”作为初始目录

    我正在编写一个 python 脚本 该脚本使用 tkinter 使用代码打开 打开文件弹出窗口 root filename filedialog askopenfilename initialdir title Select file fi
  • Android Studio 将 ProGuard 映射文件保存在哪里?

    在Android Studio中 编译签名的APK后生成的ProGuard映射文件在哪里 我不确定它是否不起作用或者我是否只是忘记了文件路径 并且我的强制性 Google Stack Overflow 搜索没有回答这个问题 它应该位于bui
  • 不安全的 C# 和 2D 渲染指针,是好是坏?

    我正在编写一个 C 控件 它包装 DirectX 9 并提供一个简化的接口来执行 2D 像素级绘图 NET 要求我将此代码包装在不安全代码块中 并使用允许不安全代码选项进行编译 我锁定整个表面 然后返回指向锁定的内存区域的指针 然后我可以使
  • 客户端和服务器无法通信,因为它们不具备 Windows Server 2008 Web 上的通用算法

    我正在开发 ASP Net WebForms 应用程序 我们正在使用PayFort 的启动 API https github com payfort start net用于付款流程 该应用程序在我们的本地计算机 Windows 10 上运行
  • 如何允许用户安装 MSI 文件的多个副本?

    我希望允许我的用户在一台 PC 上安装我的应用程序的多个副本 一种用于测试目的 一种用于生产系统 安装是直接在 Visual Studio 2005 中创建的 MSI 文件 有什么方法可以启用此功能吗 我准备使用其他工具来生成安装 甚至使用
  • 新项目中的源代码控制

    我正在工作中自己开发一个项目 我知道最终它需要存储在我们的 SVN 中 我的问题是 如果我从头开始 我该如何将其存储在 SVN 中 我是否只提交稳定的完整构建 或者当我觉得某个模块达到某个里程碑时才提交 尽早并经常做出承诺 这可以最大限度地
  • 如何向 Unity 2019 添加 JavaScript 支持?

    我几年前开发了一款游戏 现在决定改进游戏并再次开始下载 Unity 升级 Unity 后 我发现 Unity 不知道所有 JS 文件 并且已将它们与对象分离 有什么解决方案可以解决该问题并再次向 Unity 添加 JS 支持吗 2017年8
  • Glassfish / PostgreSQL 表,具有生成 com.sun.jersey.spi.inject.Errors 的复合(两部分)主键

    我有一个 PostgreSQL 表testtable具有两部分主键 ID1bigint 类型 ID2bigint 类型 和带有时间戳的非键字段 我正在尝试使用 来自数据库的新 RESTful Web 服务 向导生成 RESTful Web
  • 如何在java中使用RabbitMQ实现RPC机制

    如何在java中使用RabbitMQ实现RPC机制 生产者和消费者 我也访问官方网站http www rabbitmq com api guide html rpc http www rabbitmq com api guide html
  • golang中无法通过ObjectId获取mongodb记录

    我尝试使用以下代码通过 ObjectId 获取 mongodb 记录 但不断获取未找到 by err Error 以下是我的 mongo 集合示例 id ObjectId 5a2a75f777e864d018131a59 callDate