MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB in Go mit mgo, Operatoren mit bson.M / bson.D bekamen immer Syntaxfehler

bson.M ist ein Kartentyp, also bson.M{ ... } ist ein Map-Literal . Wenn Schlüssel-Wert-Paare in mehreren Zeilen geschrieben werden, muss jede mit einem Komma enden. Einzelheiten finden Sie unter Wie unterbricht man eine lange Codezeile in Golang?

Es gibt auch kein "Schnittstellen"-Literal, lass das. Ein Wert von interface{} Typ kann jeden Wert enthalten / umschließen, einschließlich bson.M Wert. Und die interface{} Die Wertschöpfung erfolgt automatisch, Sie benötigen nicht einmal eine Art Conversion .

Richtige Syntax:

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

Ebenso, wenn Sie bson.D verwenden type (was ein Slice ist), müssen Zeilen, die nicht mit der schließenden Klammer des Literals enden, mit einem Komma enden, z. B.:

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