mongo-go-driver通过_id查找文档

我正在尝试通过自动生成的_id字段查找文档。 以下代码不返回任何内容:</ p>

 <代码> var documentID bson.RawValue 
documentID.Type = 7
documentID.Value = [] byte(“ 5c7452c7aeb4c97e0cdb75bf”)
objID:= documentID.ObjectID ()
value:= collection.FindOne(ctx,bson.M {“ _ id”:objID})
</ code> </ pre>

我提供的值是真实的文档ID 来自Mongo Express </ p>

 “ _ id”:ObjectID(“ 5c7452c7aeb4c97e0cdb75bf”)
</ code> </ pre>

想知道为什么要打扰RawValue时,我发现了使用bson.EC.ObjectID的示例,但bson包似乎没有EC类型,还发现了一些示例,其中提到了github.com/mongodb/mongo-go-driver/bson/objectid包 ,但我也找不到该包。 我以前是用mgo开发的,但是我是mongo-go-driver的新手,因此,如果您可以指出一种简单的方法来声明ObjectID。 </ p>
</ div>

展开原文

原文

I'm trying to find a document by its auto generated _id field. Code below returns nothing:

var documentID bson.RawValue
documentID.Type = 7
documentID.Value = []byte("5c7452c7aeb4c97e0cdb75bf")
objID := documentID.ObjectID()
value := collection.FindOne(ctx, bson.M{"_id": objID})

The value I provided is a real document id I got from Mongo Express

"_id": ObjectID("5c7452c7aeb4c97e0cdb75bf")

In case you're wondering why I bother with RawValue, I found examples using bson.EC.ObjectID but bson package doesn't seem to have EC type, also I found some examples mentioning github.com/mongodb/mongo-go-driver/bson/objectid package, but I could not find that package either. I previously developed with mgo but I'm new to mongo-go-driver, so if you can point an easy way to declare an ObjectID.

douyejv820598
douyejv820598 Kalayci,您可以将工作代码添加为答案并将其标记为已接受,而不是在问题中进行编辑。这样,有类似问题的人将直接看到,这已解决
一年多之前 回复
dongmoxin7111
dongmoxin7111 感谢@CarlosCavero,只需将objID定义为原始对象即可解决这两个问题。
一年多之前 回复
dtny30176
dtny30176 首先,欢迎使用StackOverflow。尝试这个。我想这是您要寻找的包裹。
一年多之前 回复

2个回答



正如@Carlos所述,我更改了代码,一切正常。</ p>

 <  code> objID,_:= native.ObjectIDFromHex(“ 5c7452c7aeb4c97e0cdb75bf”)
value:= collection.FindOne(ctx,bson.M {“ _ id”:objID})
</ code> </ pre>
</ DIV>

展开原文

原文

As @Carlos mentioned, I changed my code as this and everything works well.

objID, _ := primitive.ObjectIDFromHex("5c7452c7aeb4c97e0cdb75bf")
value := collection.FindOne(ctx, bson.M{"_id": objID})

dousi8931
dousi8931 使用值:= collection.FindOne(ctx,bson.D {{“ ID”:objID}})也可以使用bson.D类型。
一年多之前 回复

You can use some thing like this:

var userDB user
objectIDS, _ := primitive.ObjectIDFromHex(userID)
collectionUser := dBClient.Database("MyDatabase").Collection("Users")
filter := bson.M{"_id": objectIDS}
err := collectionUser.FindOne(ctx, filter).Decode(&userDB)
if err != nil {
    fmt.Println("errror retrieving user userid : " + userID)
}
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐