如何在官方 Go MongoDB 驱动程序中使用逻辑查询选择器($or)执行 FindOne()?

Abi*_*bid 2 go mongodb mongo-go

我是 mongo 的初学者。我正在尝试查找匹配"username"email将匹配的文档。但是想不出实现这个条件过滤的方法。

这是我的文档模型:

type User struct {
    Username  string    `json:"username" bson:"username"`
    Email     string    `json:"email" bson:"email"`
    Password  string    `json:"password" bson:"password"`
    CreatedAt time.Time `json:"created_at" bson:"created_at"`
    UpdatedAt time.Time `json:"updated_at" bson:"updated_at"`
}
Run Code Online (Sandbox Code Playgroud)

和查询:

filter := bson.D{
   {"username", user.Username},
   {"$or": {"email", user.Email}},
}

err = userCollection.FindOne(context.TODO(), filter).Decode(&user)
Run Code Online (Sandbox Code Playgroud)

Mar*_*oli 5

你应该使用$or$如下:

filter := bson.D{
   {"$or":[{"username": user.Username},{"email": user.Email}]},}

Run Code Online (Sandbox Code Playgroud)