为什么我使用golang的mgo库找不到ID?

2023-11-27

我在 golang 中使用 mgo 库进行 mongodb 操作,这是我的代码:

session.SetMode(mgo.Monotonic, true)
coll := session.DB("aaaw_web").C("cron_emails")
var result Result
fmt.Printf("%v", message.ID)
err = coll.FindId(bson.ObjectId(message.ID)).One(&result)
fmt.Printf("%v", result)
fmt.Println(err)

我得到这个输出:

595f2c1a6edcba0619073263
{ObjectIdHex("") 0   0  0    0 {         0    false 0    } 0 0 0  0 0 0 0}
ObjectIDs must be exactly 12 bytes long (got 24)
not found

但我检查过,文档存在于 mongodb 中,但到这里没有结果,知道我错过了什么......


正如错误消息所提示的那样,对象 id 的长度正好是 12 个字节(12 个字节的数据)。您看到打印的 24 个字符长的 ID 是 12 个字节的 ID 的十六进制表示形式(1 个字节 => 2 个十六进制数字)。

Use the bson.ObjectIdHex()函数来获取值bson.ObjectId如果十六进制表示可用。

err = coll.FindId(bson.ObjectIdHex(message.ID)).One(&result)

对于相反方向,您可以使用ObjectId.Hex()方法,在这个答案中有详细说明:从 mgo 查询中获取 ObjectIdHex 值

你在代码中所做的很简单类型转换(鉴于message.ID属于类型string),并且语法是有效的,因为底层类型bson.ObjectId is string,这样基本上将 24 个字符解释为bson.ObjectId类型,但它是无效的ObjectId值,因为它将是 24 字节而不是 12。

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

为什么我使用golang的mgo库找不到ID? 的相关文章

  • 如何分发仅二进制的 go 包

    我想以二进制形式分发包而不包含源代码 我的演示项目目录结构是这样的 demo greet greet go hi hi go hello hello go main go main go package main import fmt de
  • 将具有联合字段的 C 结构映射到 Go 结构

    我从 Go 中的某些 WinApi 的系统调用中获取结果 我可以轻松地从 C 代码映射简单的结构 但是如何处理如下所示的 C 结构 typedef struct SPC LINK DWORD dwLinkChoice define SPC
  • Golang delve,如何启动调试器并启动正在调试的应用程序?

    我正在尝试设置一个可以远程连接的无头深度调试器 我无法找到一种方法来启动调试服务器 而该服务器不会暂停我正在调试的应用程序 我一直在使用dlv attach headless true listen 2345 attach 32但这会暂停该
  • foo.Name undefined(类型接口{}没有字段或方法名称)

    我使用本机 golang 包 container list 来管理堆栈中的 inotify 事件 当我访问堆栈的项目时 我的类型失败 我认为 import golang org x exp inotify container list lo
  • 带 cookie 身份验证的 Gorilla websocket

    这是我的设置 我正在构建一个带有用户登录的服务 使用 Negroni 和 Gorilla 登录后 用户会获得一个会话 cookie 服务器使用该会话 cookie 来授权受保护的端点 受保护的端点之一允许用户 客户端与服务器打开 Webso
  • 为什么结构体不能转换为嵌入类型

    package main type Inner struct x int type Outer struct Inner func main x Inner 1 y Outer x cannot convert x type Inner t
  • 如何使用json传递opentracing数据

    我的 API 网关启动一个跟踪器和一个用于验证电子邮件的范围 然后它传递给user service用于验证 我想通过这个span详情至user service作为 json 对象并启动另一个span as a tracer start sp
  • 如何使用 mongo-go-driver 有效地将 bson 转换为 json?

    我想将 bson 转换为mongo go 驱动程序 https github com mongodb mongo go driver有效地转换为 json 我应该小心处理NaN 因为json Marshal失败如果NaN存在于数据中 例如
  • 如何顺序运行 golang 测试?

    当我跑步时go test 我的输出 FAIL TestGETSearchSuccess 0 00s Location drivers api test go 283 Error Not equal 200 expected 204 actu
  • ReverseProxy取决于golang中的request.Body

    我想构建一个 http 反向代理 它检查 HTTP 主体 然后将 HTTP 请求发送到它的上游服务器 你怎么能在 Go 中做到这一点 初始尝试 如下 失败 因为 ReverseProxy 复制传入请求 修改它并发送 但正文已被读取 func
  • 在 Go 中使用互斥锁

    我想了解互斥体是如何工作的 据我目前的理解 它是为了进行原子操作并同步对某些数据的访问 我在这里构建了一个队列数据结构的示例 https github com arnauddri algorithms blob master data st
  • 在 Go 中生成随机、固定长度的字节数组

    我有一个字节数组 固定长度为4 token make byte 4 我需要将每个字节设置为随机字节 我怎样才能以最有效的方式做到这一点 这math rand就我而言 方法不提供随机字节函数 也许有一种内置的方法 或者我应该生成一个随机字符串
  • 从 []byte 到 char*

    我想包装一个 C 函数 它需要一个char 指向非空字节缓冲区 的第一个元素 我正在尝试使用 CGo 将其包装在 Go 函数中 以便我可以将其传递给 byte 但我不知道如何进行转换 C 函数签名的简化版本是 void foo char c
  • 如何解析 Content-Disposition 标头以检索文件名属性?

    使用 go 如何解析从 http HEAD 请求检索到的 Content Disposition 标头以获取文件的文件名 此外 如何从 http HEAD 响应中检索标头本身 这样的事情正确吗 resp err http Head http
  • for 循环初始值设定项中的结构

    知道为什么 for 循环初始值设定项中的这个结构表达式在编译时会出现语法错误吗 在这种情况下 指向结构的指针工作正常 但 ofc 我需要如下所示的局部变量 感谢您的建议 type Request struct id int line byt
  • 如何在 Go 中解组具有多个项目的简单 xml?

    我想从以下 xml 中获取人物 People 的一部分
  • 如何将UTC时间转换为unix时间戳

    我正在寻找将 UTC 时间字符串转换为 unix 时间戳的选项 我的字符串变量是02 28 2016 10 03 46 PM并且需要将其转换为 unix 时间戳 例如1456693426 知道该怎么做吗 首先 unix时间戳14566934
  • 使用 HTTPS GRC 从 AWS Codecommit 获取私有存储库

    我正在尝试导入位于 AWS codecommit 中的模块 为了克隆存储库 我使用 HTTPS GRC Git 远程代码提交 方法 该方法使用 Google Suite 凭证来访问 AWS 控制台 我用来克隆存储库的命令是 git clon
  • 模板中的 bson.ObjectId

    我有一个具有 bson ObjectId 类型的结构 例如如下所示 type Test struct Id bson ObjectId Name string Foo string 我想在 html 模板中呈现它 Name Food a h
  • 为什么 Go 禁止取 (&) 映射成员的地址,却允许取 (&) 切片元素?

    Go 不允许获取地图成员的地址 if I do this p mm abc Syntax Error cannot take the address of mm abc 理由是 如果 Go 允许使用此地址 那么当地图后台存储增长或缩小时 该

随机推荐

  • 提交成功但上传无法在合并表单中使用

    在尝试将提交和上传合 并到一种表单中时 我在上传时遇到问题 但对于提交表单来说没有问题 jQuery Ajax oqcsubmit click function if oqc valid var params oqc serialize a
  • 如何在 R Markdown 中选择特定选项卡?

    我需要从中选择一个选项卡tabset在 R Markdown 文档中 使用 Shiny 运行时 我按照中的例子如何在Shiny中选择特定的tabPanel 并尝试将其适配为 R Markdown 我添加了ids 到选项卡集 选项卡 并在up
  • 对 Python argparse 参数组重新排序

    我在用着argparse我有一个自定义参数组required arguments 有什么方法可以更改帮助消息中参数组的顺序吗 我认为将必需的参数放在可选参数之前更符合逻辑 但没有找到任何文档或问题来提供帮助 例如 改变这个 usage fo
  • 将 csv 文件导入 Python 中的矩阵/数组

    我正在尝试将包含字符串和数字数据矩阵的大 csv 文件导入到 Python 中的数组 矩阵中 在 MATLAB 中 我曾经加载文件并将其简单地分配给一个矩阵 但在 Python 中似乎有点棘手 有人可以建议吗 我对 Python 还很陌生
  • 使用 msbuild 删除空目录

    如何递归处理路径 以便处理完成后路径下不存在空目录 例如 假设我们有C Dir1 Dir2 Dir3并且这些目录中都没有文件 结果应该是删除所有三个目录 我想在不使用自定义任务的情况下完成此任务 像这样的东西应该可以工作 但没有检查计算数千
  • 在自定义 UITableViewCell 中管理 UITextFields 的委托

    因此 我环顾四周 似乎没有任何内容可以准确解释执行此操作的正确方法 我在自定义 UITableViewCell 中有 7 个 UITextField 我的问题是 管理这些 UITextFields 委托的正确方法是什么 由于自定义单元格在技
  • PyCharm 不在主窗口上运行配置

    PyCharm 社区版在 Ubuntu 18 04 上如下所示 请注意 运行配置下拉列表不在我的主窗口上 搜索了文档 设置 视图 但无法弄清楚如何将其附加到主视图 还有其他人有这个问题吗 谢谢 LazyOne 你的回答让我注意到了导航栏 但
  • 如何使用淡入淡出动画设置屏幕亮度?

    是否可以在 iOS 5 1 上以动画方式显示屏幕亮度变化 我在用 UIScreen mainScreen setBrightness float 但我认为突然的改变很难看 当我尝试使用正在进行的先前动画将动画设置为另一个值时 我遇到了接受的
  • WooCommerce:如何显示“产品附加组件”扩展中的字段?

    我正在使用 WooCommerce 的 产品附加组件 1 扩展 它允许产品的自定义字段 这会自动显示在单个产品模板上 通过对单一产品模板的一些尝试和错误 它似乎挂在了某个地方woocommerce single product summar
  • 如何将本地时间字符串转换为 UTC?

    如何转换日期时间当地时间的字符串 to a UTC 时间字符串 我确信我以前做过这个 但找不到它 所以希望将来能帮助我 和其他人 做到这一点 澄清 例如 如果我有2008 09 17 14 02 00在我当地的时区 10 我想生成一个具有等
  • 是否可以检测移动浏览器的 GPS 位置? [复制]

    这个问题在这里已经有答案了 我正在制作一个针对手机的网站 并且希望在用户访问我的默认页面时获取用户当前的 GPS 纬度 经度 以便我可以向他们显示他们所在区域的结果 使用 ASP NET 可以实现这一点吗 See Also 从手机浏览器获取
  • 如何向 tableGrob 图添加标题?

    我有一个表格 我想在它上面打印一个标题 t1 lt tableGrob top 10 events by casualties cols c EVTYPE casualties rows seq 1 10 grid draw t1 这里也提
  • Spring和Hibernate突然将事务设置为只读

    我们有一个在 JBoss 4 2 3 上运行的应用程序 使用 Spring 2 5 2 和 Hibernate 3 2 6 ga 它在 Linux JEE01 2 6 16 60 0 54 5 smp 上运行 使用自己的用户 写入另一台机器
  • 在基于 Python 文本的 GUI (TUI) 中输入

    我一直在尝试在 python 2 7 中制作自己的基于文本的 UI 但我想到了一个关于输入的想法 所以我想到了这样的事情 input raw input input center 78 但粗略地说 光标在右侧很远 在我输入它之前才意识到它不
  • PHP CURL CURLOPT_SSL_VERIFYPEER 被忽略

    由于某种原因 我无法将 CURL 与 HTTPS 一起使用 一切都工作正常 直到我运行了curl 库的升级 现在 我在尝试执行 CURL 请求时遇到以下响应 SSL CA 证书有问题 路径 访问权限 根据此处发布的有关相关问题的建议 我尝试
  • 如何在 Eclipse IDE 中运行简单的 C 程序

    我已经下载了 Eclipse C C IDE 我需要在其中运行一个简单的c 程序 打印欢迎 在尝试运行该程序时 它会弹出一条错误消息 例如 Launch failed Binary not found 我需要安装任何编译器包 请帮助我做到这
  • 返回下载文件的 Post 请求

    我正在将数据发送到我的服务器 该服务器根据请求创建一个 pdf 文件 该文件创建得很好 但我无法将文件发送回客户端 我正在使用 React 来提交表单 handleSubmit event event preventDefault var
  • 没有形式参数的可变参数函数模板

    这就是我想做的 base case void f template
  • 使用 javascript 动态修改 SVG 过滤器

    我正在尝试创建动态模糊效果 可以使用 javascript 即时修改 首先 我使用这个非常简单的 svg 过滤器
  • 为什么我使用golang的mgo库找不到ID?

    我在 golang 中使用 mgo 库进行 mongodb 操作 这是我的代码 session SetMode mgo Monotonic true coll session DB aaaw web C cron emails var re