所以这是我的问题。我有一个存储_ids
mongodbs 对象的数组。使用 mgo 和 bson 包在一个查询中检索它们的正确方法是什么?
所以如果数组是这样的:ids:=["543d171c5b2c12420dd016","543d171c5b2dd016"]
我们如何进行查询?我试过了,但我知道它错了。
query := bson.M{"_id": bson.M{"$in": ids}}
c.Find(query).All()
提前致谢
如果文档是用字符串 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}}
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)
}
}