sql >> Database >  >> NoSQL >> MongoDB

MongoDB in Go met mgo, operators met bson.M / bson.D kregen altijd een syntaxisfout

bson.M is een kaarttype, dus de bson.M{ ... } is een letterlijke kaart . Als sleutel/waarde-paren in meerdere rijen zijn geschreven, moet elk met een komma eindigen. Voor details, zie Hoe breek je een lange regel code in Golang?

Er is ook geen letterlijke "interface", laat dat vallen. Een waarde van interface{} type kan elke waarde bevatten / verpakken, inclusief een bson.M waarde. En de interface{} waardecreatie is automatisch, je hebt niet eens een type conversie nodig .

Correcte syntaxis:

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

Evenzo, als u de bson.D gebruikt type (wat een slice is), moeten regels die niet eindigen met het haakje sluiten van de letterlijke tekst eindigen met een komma, bijvoorbeeld:

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



  1. Moet ik een schaarse index gebruiken voor booleaanse vlaggen in mongodb?

  2. MongoDB groeperen per uur

  3. Is het mogelijk om voortgangsmeldingen op de kaart te krijgen in Mongo?

  4. Is dit een veilige manier om een ​​reeks objecten in mongodb in te voegen en bij te werken?