这是一种愚蠢的语法错误,尝试了很多方法,但无法正常工作,请有人帮忙。
在Go with中的MongoDB中mgo,我只是尝试简化$ne运算符的使用,如下所示的代码,但是不断出现编译语法错误:
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是一个地图类型,所以bson.M{ ... }是一个地图字面。如果键值对写在多行中,则每行必须以逗号结尾。
bson.M
bson.M{ ... }
也没有“接口”文字,将其删除。interface{}类型的值可以保存/包装任何值,包括bson.M值。并且interface{}值创建是自动的,您甚至不需要类型转换。
interface{}
正确的语法:
convIter := Session.Copy().DB("").C("convs").Find(bson.M{ "conversationStatus": bson.M{ "$ne": "DESTROYED", }, }).Iter()
同样,如果使用bson.D类型(这是一个切片),则不以文字的右括号结尾的行必须以逗号结尾,例如:
bson.D
d := bson.D{ {Name: "fieldA", Value: 1}, {Name: "fieldB", Value: "running"}, }