【问题标题】:Querying mongodb from golang using the _id stored in an array使用存储在数组中的_id从golang查询mongodb
【发布时间】:2014-12-13 05:30:41
【问题描述】:

所以这是我的问题。我有一个数组,其中存储了 _ids 的 mongodbs 对象。使用 mgo 和 bson 包在一个查询中检索它们的正确方法是什么?

所以如果数组是这样的:ids:=["543d171c5b2c12420dd016","543d171c5b2dd016"]

我们如何进行查询?我试过了,但我知道它错了。

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

提前致谢

【问题讨论】:

    标签: mongodb go bson mgo


    【解决方案1】:

    如果文档是用字符串 id 存储的,那么代码看起来是正确的。

    ID 看起来像十六进制编码的对象 ID。如果对象标识符是对象 ID,则需要将十六进制字符串转换为对象 ID:

    oids := make([]bson.ObjectId, len(ids))
    for i := range ids {
      oids[i] = bson.ObjectIdHex(ids[i])
    }
    query := bson.M{"_id": bson.M{"$in": oids}}
    

    【讨论】:

      【解决方案2】:

      go.mongodb.org/mongo-driver 的 MongoDB 语法已经更新,应该可以使用官方驱动。

      oids := make([]primitive.ObjectID, len(ids))
      for i := range ids {
          objID, err := primitive.ObjectIDFromHex(ids[i])
          if err == nil {
              oids = append(oids, objID)
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2021-03-14
        • 1970-01-01
        • 1970-01-01
        • 2016-07-04
        • 2018-09-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-20
        相关资源
        最近更新 更多