#mongodb #go
#mongodb #Вперед
Вопрос:
Это то, чего я пытаюсь достичь:
bson.M{constants.MONGO_SET: entity.UserShop{Shop.ID: userShop.Shop.ID}}
вместо этого используя
bson.M{constants.MONGO_SET: entity.UserShop{"shop._id": userShop.Shop.ID}}
будучи
type UserShop struct {
User `json:"-" bson:"-"`
Shop `json:"shop,omitempty" bson:"shop,omitempty"`
}
и магазин
type Shop struct {
ID primitive.ObjectID `json:"-" bson:"_id,omitempty"`
Name string `json:"name,omitempty" bson:"name,omitempty"`
Description string `json:"description,omitempty" bson:"description,omitempty"`
ImageURL string `json:"imageURL,omitempty" bson:"imageURL,omitempty"`
Stars int64 `json:"stars,omitempty" bson:"stars,omitempty"`
// Location *[]int64 `json:"location,omitempty" bson:"location,omitmepty"`
// Products *AllProducts `json:"products,omitempty" bson:"products,omitempty"`
}
В структуре базы данных :
Магазин:{ _id: «12344», имя: «привет» }
Я хочу изменить какое-либо конкретное поле и не изменять какое-либо другое поле внутри объекта shop
Ответ №1:
Используйте следующее выражение для обновления только shop._id
поля:
bson.M{"$set":bson.M{"shop._id":userShop.Shop.ID}}
Комментарии:
1. Я просто хочу избежать использования строки «shop._id», задаваясь вопросом, есть ли способ добиться такого же поведения с использованием данной структуры.
2. Данная структура имеет поле int64, которое всегда будет добавлено к выражению. Вы можете определить отдельную структуру, содержащую только поле _id, если хотите.