小编Den*_*s S的帖子

如何使用 Go 驱动程序对 MongoDB 进行 BulkWrite\UpdateMany

我正在从 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()?文档太模糊了,我不知道如何使用它们以及有什么区别。任何帮助,将不胜感激。

go mongo-go

6
推荐指数
1
解决办法
4601
查看次数

分配的指针字段变为 <nil>

我有一个结构:

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_ptruser_ptr. 但是在下一次调用“newData”请求时,user_ptr.data_ptrnil

以防万一,这里是loadData()

func …
Run Code Online (Sandbox Code Playgroud)

struct pointers go

2
推荐指数
1
解决办法
807
查看次数

标签 统计

go ×2

mongo-go ×1

pointers ×1

struct ×1