所以基本上我有這個必須出現在 mongoDb 中的結構,我必須撰寫一個查詢,女巫首先檢查具有 profileID 的物件是否已經存在,它將新的報價 ID 推送到現有的物件報價陣列。如果一個具有 profileID 的物件不存在,它會創建一個物件并將商品 ID 添加到商品陣列中。是否可以在一個查詢中完成?如果是這樣,任何人都可以幫助我如何實施它?
type IgnoreOffer struct {
ProfileID primitive.ObjectID `json:"profileID" bson:"profileID"`
Offers []primitive.ObjectID `json:"offers,omitempty" bson:"offers,omitempty"`
}
這是我的代碼,但它不會在資料庫中創建新物件。
func getIgnoreOffersCollection() *mongo.Collection {
return db.GetMongoCollection("ignoreOffers")
}
func ignoreOffer(profileId primitive.ObjectID, offerId primitive.ObjectID) error {
var offer IgnoreOffer
offer.ProfileID = profileId
ctx, _ := db.GetTimeoutContext()
filter := bson.M{"profileID": profileId}
update := bson.M{
"$set": bson.M{
"updatedAt": time.Now(),
},
"$push": bson.M{
"offers": offerId,
},
}
_, err := getIgnoreOffersCollection().UpdateOne(ctx, filter, update)
if err != nil {
log.Error("could not update ignoreOffer collection, err: ", err)
return err
}
return nil
}
uj5u.com熱心網友回復:
你需要一個 upsert 在你的情況下:
_, err := getIgnoreOffersCollection().UpdateOne(ctx, filter, update, options.Update().SetUpsert(true))
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/433625.html
上一篇:通過mongoose從mongoDB請求單個檔案后,影像和CSS鏈接斷開
下一篇:聚合與嵌套值的組和總和
