MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

MongoDB in Go con mgo, gli operatori con bson.M / bson.D hanno sempre riscontrato un errore di sintassi

bson.M è un tipo di mappa, quindi bson.M{ ... } è un letterale mappa . Se le coppie chiave-valore vengono scritte in più righe, ciascuna deve terminare con una virgola. Per i dettagli, vedere Come spezzare una lunga riga di codice in Golang?

Inoltre non esiste un letterale "interfaccia", lascia perdere. Un valore di interface{} type può contenere / avvolgere qualsiasi valore, incluso un bson.M valore. E l'interface{} la creazione di valore è automatica, non hai nemmeno bisogno di una conversione .

Sintassi corretta:

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

Allo stesso modo, se utilizzi bson.D tipo (che è una fetta), le righe che non terminano con la parentesi di chiusura del letterale devono terminare con una virgola, ad es.:

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