MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

MongoDB em Go com mgo, operadores com bson.M / bson.D sempre obtiveram erro de sintaxe


bson.M é um tipo de mapa, então o bson.M{ ... } é um literal de mapa . Se os pares de valores-chave forem escritos em várias linhas, cada um deve terminar com uma vírgula. Para obter detalhes, consulte Como quebrar uma longa linha de código em Golang?

Também não há literal de "interface", largue isso. Um valor de interface{} type pode conter / envolver qualquer valor, incluindo um bson.M valor. E a interface{} a criação de valor é automática, você nem precisa de um tipo conversão .

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

Da mesma forma, se você usar o bson.D type (que é uma fatia), as linhas que não terminam com o colchete de fechamento do literal devem terminar com uma vírgula, por exemplo:
d := bson.D{
    {Name: "fieldA", Value: 1},
    {Name: "fieldB", Value: "running"},
}