MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak zaktualizować pola Mongodb z flagą pominięcia w strukturze Golang

Wartość bool type ma 2 możliwe wartości:false i true . I chcesz "komunikować" 3 różne stany za pomocą bool pole, a mianowicie, aby nie aktualizować pola, aby ustawić pole na false i ustawić pole na true . To oczywiście nie jest możliwe.

To samo dotyczy int wartości:wartość 0 nie może reprezentować 2 różnych opcji, a mianowicie nie aktualizować pola i ustawić je na 0 .

Jeśli chcesz zachować omitempty opcje w wartościach tagów, a następnie, aby to zadziałało, musisz zmienić pola na wskaźniki:

type Coupon struct {
    Id               *int    `json:"id,omitempty" bson:"_id,omitempty"`
    Name             string `json:"name,omitempty" bson:"name,omitempty"`
    Code             string `json:"code,omitempty" bson:"code,omitempty"`
    Description      string `json:"description,omitempty" bson:"description,omitempty"`
    Status           *bool   `json:"status" bson:"status"`
    MaxUsageLimit    *int    `json:"max_usage_limit,omitempty" bson:"max_usage_limit,omitempty"`
    SingleUsePerUser *bool   `json:"single_use_per_user,omitempty" bson:"single_use_per_user,omitempty"`
}

Działa to tak, że jeśli wskaźnikiem jest nil , zostanie pominięty (jest to "pominięcie" opcja). Jeśli pole ma wartość inną niż nil wskaźnik, zostanie zaktualizowany do wskazanej wartości.

Na przykład, jeśli chcesz wykluczyć bool pole, a następnie *bool wartość powinna / będzie wynosić nil . Jeśli chcesz ustawić / zaktualizować go na false , musi to być wskaźnik do false wartość. Jeśli chcesz ustawić / zaktualizować go do true , musi to być wskaźnik do true wartość.

Ogólnie każdy typ, którego wartość zerowa jest możliwe i powinno być liczone z, możesz obsłużyć tylko "jest to wartość zero" i "brakuje jej na wejściu", jeśli ustawisz go jako wskaźnik, a nil wartość wskaźnika będzie oznaczać przypadek "braku w danych wejściowych", podczas gdy inny niż nil wskaźnik do wartości zerowej będzie oznaczał przypadek „jest to wartość zerowa”. Tak więc w powyższym przykładzie, jeśli string pola mogą również przyjmować pustą wartość ciągu ("" ), musisz także uczynić je wskaźnikami.

Pamiętaj, że możesz to również osiągnąć za pomocą niestandardowej logiki kierowania i rozmieszczania, ale jest to bardziej kłopotliwe, a użycie wskaźników daje to automatycznie.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak dodać metodę schematu w manguście?

  2. Policz wystąpienia w zagnieżdżonym dokumencie mongodb i utrzymuj grupę

  3. Jak bezpośrednio zapytać o pole zagnieżdżone bez określania pola nadrzędnego?

  4. Jak połączyć się z mongoDB Atlas za pomocą mangusty?

  5. Jaka byłaby motywacja do integracji mongodb z solr