MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB в Go с mgo, операторите с bson.M / bson.D винаги получават синтактична грешка

bson.M е тип карта, така че bson.M{ ... } е картографски литерал . Ако двойките ключ-стойност са записани на няколко реда, всеки трябва да завършва със запетая. За подробности вижте Как да разбия дълъг ред код в Golang?

Също така няма литерал "интерфейс", зарежете това. Стойност на interface{} type може да съдържа/обгръща всяка стойност, включително bson.M стойност. И interface{} създаването на стойност е автоматично, дори не се нуждаете от преобразуване .

Правилен синтаксис:

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

По същия начин, ако използвате bson.D тип (който е срез), редовете, които не завършват със затварящата скоба на литерала, трябва да завършват със запетая, напр.:

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



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Премахване на обект от масив в колекция

  2. Не може да се създаде индекс поради TypeError:няма достатъчно аргументи за форматиращ низ

  3. Как да преименувате пътя в отговор на попълване

  4. Mongodb не може да стартира в Ubuntu 15.04

  5. Отстраняване на неизправности в MongoDB на Windows (C#) (Какво да направя?)