sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB en Go con mgo, los operadores con bson.M / bson.D siempre tenían un error de sintaxis

bson.M es un tipo de mapa, por lo que bson.M{ ... } es un literal de mapa . Si los pares clave-valor se escriben en varias filas, cada una debe terminar con una coma. Para obtener más información, consulte ¿Cómo dividir una larga línea de código en Golang?

Además, no hay un literal de "interfaz", suéltalo. Un valor de interface{} type puede contener/envolver cualquier valor, incluido un bson.M valor. Y la interface{} la creación de valor es automática, ni siquiera necesita un tipo de conversión .

Sintaxis correcta:

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

Del mismo modo, si usa el bson.D tipo (que es una porción), las líneas que no terminan con el corchete de cierre del literal deben terminar con una coma, por ejemplo:

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