如何使用Mongodb在Golang中使用批量更新获取更新的文档ID

时间:2019-01-18 12:08:01

标签: mongodb go mongodb-query mgo

我正在从事golang项目。我正在使用MongoDB数据库。 我需要使用批量更新功能获取所有文档ID。我正在使用带有以下代码的mgo golang软件包:

       dense_rank() over (partition by tt.shop_name order by tt.avg_price desc, category)

我得到这样的输出:

package main

import (
   "fmt"
   "gopkg.in/mgo.v2/bson"
   "gopkg.in/mgo.v2"
)
type QueryStruct struct{
   Selector    bson.M
   Query       bson.M   
}

func main(){
   session, err := mgo.Dial("127.0.0.1")
   if err != nil {
      panic(err)
   }

   defer session.Close()

   session.SetMode(mgo.Monotonic, true)
   var queries []QueryStruct
   for i:=1; i<=400; i++{
      var query QueryStruct
      query.Selector = bson.M{"country":"US"}
      query.Query = bson.M{"$set":bson.M{"serial_number":i}}
      queries = append(queries, query)
   }
   c := session.DB("test").C("people")
   bulk := c.Bulk()
   for _, queryVal := range queries{
       bulk.UpdateAll(queryVal.Selector, queryVal.Query)
   }
   data, err := bulk.Run()
   fmt.Println(data)
   fmt.Println(err)
}

如果任何条目未更新,我需要获取更新的文档ID来维护日志。

有人可以建议我如何实现这一目标吗?

0 个答案:

没有答案