gpt4 book ai didi

MongoDB 在 Go 中使用 mgo,使用 bson.M/bson.D 的运算符总是出现语法错误

转载 作者:IT老高 更新时间:2023-10-28 13:15:51 30 4
gpt4 key购买 nike

这是一种愚蠢的语法错误,尝试了很多方法,但都无法正常工作,请大家帮忙。

使用 mgo 在 Go 中使用 MongoDB,我只是尝试简化 $ne 运算符的使用,代码如下所示,但不断出现编译语法错误:

line 15: convIter := Session.Copy().DB("").C("convs").Find(bson.M {
line 16: "conversationStatus": interface{} {
line 17: bson.M {
line 18: "$ne": "DESTROYED"
line 19: },
line 20: },
line 21: }).Iter()

尝试添加逗号 , 到处删除逗号,就是无法正常工作,总是出现如下编译语法错误:

mongodb/query.go:16: syntax error: unexpected {, expecting comma or }
mongodb/query.go:20: syntax error: unexpected }, expecting expression
mongodb/query.go:21: syntax error: unexpected }, expecting expression

最佳答案

bson.M是 map 类型,所以 bson.M{ ... }map literal .如果键值对写在多行中,则每行都必须以逗号结尾。详情见How to break a long line of code in Golang?

也没有“接口(interface)”文字,放弃它。 interface{} 类型的值可以保存/包装任何值,包括 bson.M 值。 interface{} 值创建是自动的,您甚至不需要类型 conversion .

正确的语法:

convIter := Session.Copy().DB("").C("convs").Find(bson.M{
"conversationStatus": bson.M{
"$ne": "DESTROYED",
},
}).Iter()

同样,如果您使用 bson.D类型(这是一个 slice ),不以文字的右括号结尾的行必须以逗号结尾,例如:

d := bson.D{
{Name: "fieldA", Value: 1},
{Name: "fieldB", Value: "running"},
}

关于MongoDB 在 Go 中使用 mgo,使用 bson.M/bson.D 的运算符总是出现语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42554759/

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