gpt4 book ai didi

mongodb - 如何构建bson.D {}

转载 作者:行者123 更新时间:2023-12-01 22:20:46 24 4
gpt4 key购买 nike

我试图做这样的更新查询:

    coll = client.Database("tedi").Collection("users")

filter := bson.D{primitive.E{Key: "_id", Value: userID}}
update := bson.D{primitive.E{Key: "$addToSet", Value: bson.D{primitive.E{Key: "listings", Value: listingID}}}}

ur, err := coll.UpdateOne(context.TODO(), filter, update)
if err != nil {
return "", err
}

fmt.Println(ur.MatchedCount)
fmt.Println(ur.UpsertedCount)
fmt.Println(ur.ModifiedCount)
fmt.Println(ur.UpsertedID)

我没有返回任何错误,但是没有任何更新发生,因此我认为 update选项的结构不正确。
如果我这样构建: bson.D{{"$addToSet", bson.D{{"listings", listingID}}}},如此处文档所建议: https://godoc.org/go.mongodb.org/mongo-driver/mongo#Collection.UpdateOne,IDE会警告我: go.mongodb.org/mongo-driver/bson/primitive.E composite literal uses unkeyed fields所有 ur.*Count变量均为0,而 ur.UpsertedID为nil
我正在使用go1.15 Linux / amd64
和go.mongodb.org/mongo-driver v1.4.0

最佳答案

好的,所以我找到了问题。
我必须传递primitive.ObjectID而不是string
我这样做是这样的:

    oid, err := primitive.ObjectIDFromHex(userID)
if err != nil {
return err
}

filter := bson.D{primitive.E{Key: "_id", Value: oid}}
其余的都一样

关于mongodb - 如何构建bson.D {},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63646165/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com