使用mgo错误插入ISODate字段

时间:2015-08-31 20:26:54

标签: go mgo

我使用go,mgo和gin gonic真的很新......我一直在创建一个迷你应用程序,我在使用mgo将新注册表插入mongoDB时遇到问题。我的错误说:

  

" PANIC:错误解析字段文档的元素0 ::由::引起   错误的类型为' 0'字段,预期对象,找到0:[{date:new   日期(1441051152939),从:" 11",到:" 12",办公室:" 2",client_id:   " 1368465545" }] _"

我的结构是下一个结构:

type Reservation struct {
      ID        bson.ObjectId `bson:"_id,omitempty" json:"_id"`
      Date      time.Time     `bson:"date" json:"date"`
      From      string        `bson:"from" json:"from"`
      To        string        `json:"to"`
      Office     string       `json:"office"`
      Client_id string        `json:"client_id"` }

我试图使用gin-gonic和mgo将其插入如下:

    func addReservation(c *gin.Context) {

          x := session.DB("projXXXX").C("reservation")
          var reservations []Reservation
          c.Bind(&reservations)>             
          err := x.Insert(&reservations)
          if err != nil {
                panic(err)
          }
          c.String(200,"whatever")  
}

我在mongoDB中的收藏是这样的:

{
    "_id" : ObjectId("55ba2e611cb87b9a6d75e94b"),
    "date" : ISODate("2015-10-22T00:00:00.000Z"),
    "from" : "9",
    "to" : "10",
    "office" : "4",
    "client_id" : "1123456469797"
}

非常感谢你的帮助

1 个答案:

答案 0 :(得分:4)

从错误的角度来看,MongoDB正在看到一个数组,它希望看到一个对象。看起来问题是您尝试将[]Reservation切片作为单个对象插入。

Collection.Insert不是将一片对象插入,而是将每个对象作为单独的参数插入。您可能想要使用the special ... syntax for calling a variadic function

err := x.Insert(reservations...)