MongoDB 在带有 mgo 的 Go 中,带有 bson.M / bson.D 的运算符总是出现语法错误
MongoDB in Go with mgo, operators with bson.M / bson.D always got syntax error
这是一种愚蠢的语法错误,尝试了很多方法,就是无法解决问题,请有人帮忙。
MongoDB 在 Go 中使用 mgo
,我只是试图简化使用 $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
is a map type, so the bson.M{ ... }
is a map literal. If key-value pairs are written in multiple rows, each has to end with a comma. For details, see
也没有 "interface" 文字,放弃它。 interface{}
类型的值可以保存/包装任何值,包括 bson.M
值。 interface{}
值的创建是自动的,您甚至不需要类型 conversion.
正确的语法:
convIter := Session.Copy().DB("").C("convs").Find(bson.M{
"conversationStatus": bson.M{
"$ne": "DESTROYED",
},
}).Iter()
同样,如果您使用 bson.D
类型(它是一个切片),不以文字右括号结尾的行必须以逗号结尾,例如:
d := bson.D{
{Name: "fieldA", Value: 1},
{Name: "fieldB", Value: "running"},
}
这是一种愚蠢的语法错误,尝试了很多方法,就是无法解决问题,请有人帮忙。
MongoDB 在 Go 中使用 mgo
,我只是试图简化使用 $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
is a map type, so the bson.M{ ... }
is a map literal. If key-value pairs are written in multiple rows, each has to end with a comma. For details, see
也没有 "interface" 文字,放弃它。 interface{}
类型的值可以保存/包装任何值,包括 bson.M
值。 interface{}
值的创建是自动的,您甚至不需要类型 conversion.
正确的语法:
convIter := Session.Copy().DB("").C("convs").Find(bson.M{
"conversationStatus": bson.M{
"$ne": "DESTROYED",
},
}).Iter()
同样,如果您使用 bson.D
类型(它是一个切片),不以文字右括号结尾的行必须以逗号结尾,例如:
d := bson.D{
{Name: "fieldA", Value: 1},
{Name: "fieldB", Value: "running"},
}