我正在从 mgo 驱动程序迁移,我的函数如下所示:
queue := collection.Bulk()
for j := range changes {
..
queue.Update(doc, update)
}
saveResult, err := queue.Run()
Run Code Online (Sandbox Code Playgroud)
这会在循环中对单个文档进行一些$push和$set更新。我应该如何使用官方驱动程序执行此操作?是collection.BulkWrite()还是collection.UpdateMany()?文档太模糊了,我不知道如何使用它们以及有什么区别。任何帮助,将不胜感激。
我有一个结构:
type user struct {
Id string
..
data_ptr *userData
}
Run Code Online (Sandbox Code Playgroud)
我将用户切片存储在全局范围内:
type Hall struct {
users []user
}
var hall = Hall{} //global
Run Code Online (Sandbox Code Playgroud)
最后,http 处理程序:
func dataHandler(response http.ResponseWriter, request *http.Request) {
userExist, user_ptr := hall.haveUserId() //works fine
switch requestType {
case "load":
user_ptr.loadData() //data loaded and user_ptr.data_ptr is set
case "newData":
user_ptr.data_ptr = newData // <-- this is it, now previously set data_ptr == nil
Run Code Online (Sandbox Code Playgroud)
那么,到底为什么,我的意思是我发送“加载”请求,它加载数据,设置data_ptr为user_ptr. 但是在下一次调用“newData”请求时,user_ptr.data_ptr是nil?
以防万一,这里是loadData():
func …Run Code Online (Sandbox Code Playgroud)