亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將 $push 和 $each 與 go mgo 驅動程序一起使用?

如何將 $push 和 $each 與 go mgo 驅動程序一起使用?

Go
海綿寶寶撒 2021-12-07 14:58:45
我創建了一個基本的嵌套結構:type Komplex struct {count int    `bson:"count"`text  string `bson:"text"`}type Parent struct {Count    int       `bson:"count"`SubCount []Komplex `bson:"subcount"`}我想使用 mongo 的安全更新功能來擴展集合:session.DB("test").C("ints").Upsert(bson.M{"count": toWrite.Count},  bson.M{"$addToSet": bson.M{"subcount": bson.M{"$each": toWrite.SubCount}}})當我用一片 int 替換 Komplex 結構時,這會起作用。但是,當我嘗試使用我的 Komplex 結構進行復雜的集合添加時,如https://docs.mongodb.org/manual/reference/operator/update/push/#up._S_push 中所述,沒有插入任何內容。在這種情況下,我如何正確地將帶有結構的切片編組到 bson.M?
查看完整描述

2 回答

?
三國紛爭

TA貢獻1804條經驗 獲得超7個贊

你的 Golang 代碼應該是這樣的:


data := model.Komplex {

            count: 12345,

            text: "yourText",

        }



selector := bson.M{"count": toWrite.Count}

changes := bson.M{"$addToSet": bson.M{"subcount": bson.M{"$each": []model.Komplex{data}}}}

err = c.Update(selector, changes)

您已共享處理 $push 的參考鏈接,但您在查詢中使用了 $addToSet。


$push - 即使數據重復也會追加數組


$addToSet - 在數組中只保留不同的值


另外,我建議您在Parent結構中包含一個 _id 字段。


查看完整回答
反對 回復 2021-12-07
?
絕地無雙

TA貢獻1946條經驗 獲得超4個贊

也許僅適用于此代碼:


session.DB("test").C("ints").Update(bson.M{"count": toWrite.Count},

bson.M{"$addToSet": bson.M{"subcount": bson.M{"$each":  toWrite.SubCount}}}

)


查看完整回答
反對 回復 2021-12-07
  • 2 回答
  • 0 關注
  • 158 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號