首页 >后端开发 >Golang >如何使用 mgo 和 bson 通过对象 ID 数组检索 MongoDB 文档?

如何使用 mgo 和 bson 通过对象 ID 数组检索 MongoDB 文档?

Barbara Streisand
Barbara Streisand原创
2024-10-30 06:35:27768浏览

How to Retrieve MongoDB Documents by an Array of Object IDs using mgo and bson?

通过对象 ID 数组检索 MongoDB 文档

在 MongoDB 中,可以存储对象 ID 数组(也称为 _ids)在一个文档内。要有效检索与这些对象 ID 对应的所有文档,请使用 $in 运算符。

问题:

您有一个十六进制编码的 _ids 数组:

ids := ["543d171c5b2c12420dd016", "543d171c5b2dd016"]

如何使用 mgo 和 bson 检索相应的文档?

答案:

您的初始方法使用:

query := bson.M{"_id": bson.M{"$in": ids}}
c.Find(query).All()

是不正确的,因为 _ids 存储为对象 ID,而不是字符串。要通过对象 ID 检索文档,您需要将十六进制编码的字符串转换为 bson.ObjectId 对象:

oids := make([]bson.ObjectId, len(ids))
for i := range ids {
  oids[i] = bson.ObjectIdHex(ids[i])
}

query := bson.M{"_id": bson.M{"$in": oids}}
c.Find(query).All()

此代码:

  1. 创建 bson.ObjectId 的切片对象。
  2. 迭代十六进制编码的 _id 字符串,使用 bson.ObjectIdHex 函数将每个字符串转换为对象 ID。
  3. 构造一个查询,其中 _id 字段与任何提供的对象 ID 匹配.
  4. 使用 Find 和 All 方法从 MongoDB 集合中检索所有匹配的文档。

以上是如何使用 mgo 和 bson 通过对象 ID 数组检索 MongoDB 文档?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn