sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB v Go s mgo, operátoři s bson.M / bson.D vždy dostali chybu syntaxe

bson.M je typ mapy, takže bson.M{ ... } je mapový literál . Pokud jsou páry klíč–hodnota zapsány ve více řádcích, musí každý končit čárkou. Podrobnosti viz Jak přerušit dlouhý řádek kódu v Golangu?

Také neexistuje doslovný „rozhraní“, toho nechte. Hodnota interface{} typ může obsahovat / zalomit jakoukoli hodnotu, včetně bson.M hodnota. A interface{} vytváření hodnoty je automatické, nepotřebujete ani typ konverze .

Správná syntaxe:

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

Podobně, pokud používáte bson.D type (což je řez), řádky, které nekončí uzavírací závorkou literálu, musí končit čárkou, např.:

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



  1. Zdá se, že dotaz na datum s ISODate v mongodb nefunguje

  2. Výjimka Mongodb, výjimka MongoCursorException' se zprávou '$ operátor udělal objekt příliš velký Co to znamená?

  3. Vypršel časový limit připojení Pymongo ze vzdáleného počítače

  4. Lombok - java.lang.StackOverflowError:null na metodě toString