如何在官方Go MongoDB驱动程序中使用逻辑查询选择器($or)执行FindOne()?
我是一名围棋初学者。我正在尝试查找一个将匹配如何在官方Go MongoDB驱动程序中使用逻辑查询选择器($or)执行FindOne()?,mongodb,go,mongo-go,Mongodb,Go,Mongo Go,我是一名围棋初学者。我正在尝试查找一个将匹配“用户名”或电子邮件的文档。但无法找到实现此条件的方法进行筛选 以下是我的文档模型: type User struct { Username string `json:"username" bson:"username"` Email string `json:"email" bson:"email"` Password st
“用户名”
或电子邮件的文档。但无法找到实现此条件的方法进行筛选
以下是我的文档模型:
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"`
}
以及查询:
filter := bson.D{
{"username", user.Username},
{"$or": {"email", user.Email}},
}
err = userCollection.FindOne(context.TODO(), filter).Decode(&user)
您应该使用$或$
,如下所示:
filter := bson.D{
{"$or":[{"username": user.Username},{"email": user.Email}]},}
最后这个方法对我有效
filter := bson.D{{
"$or",
bson.A{
bson.D{
{"username", user.Username},
},
bson.D{
{"email", user.Email},
},
},
}}
有关构造命令的一些信息:
D:BSON文档。此类型应在订单重要的情况下使用,例如MongoDB命令。
M:一张无序的地图。它与D相同,只是不保留顺序。
A:BSON阵列。
E:D中的单个元素。
它抛出一个语法错误:意外{,应为表达式
。在末尾添加分号