如何解决在Go中初始化MongoDB Array字段
我有这个数据模式:
"person": {
"name": "John","pets": [
{
"name": "Birdie"
}
]
}
这是将Person文档插入到MongoDB中的结构:
type Person struct {
Id primitive.ObjectID `bson:"_id,omitempty" json:"id"`
Name string `json:"name"`
Pets []struct {
Name string `json:"name"`
} `json:"pets"
}
当不带pets字段的JSON发送到POST Person API时,记录的MongoDB文档的pets字段设置为null。我认为这是因为go中的切片的nil值为零而不是空数组?
personPostRequest := ds.Person{}
if err := c.ShouldBindJSON(&personPostRequest); err != nil {
c.JSON(http.StatusBadRequest,gin.H{"error": err.Error()})
return
}
将宠物初始化为null很麻烦,因为在向文档中添加宠物时我无法使用addToSet:
// Will render the error Cannot apply $addToSet to non-array field.
// Field named 'pets' has non-array type null
err = collection.FindOneAndUpdate(
ctx,bson.M{"_id": personId},bson.M{
"$addToSet": bson.M{
"pets": bson.M{"$each": pets},},&opt,)
我可以通过向pets添加结构标签bson:,omitempty
来解决此问题,但是我想探索在MongoDB中可以将pet初始化为空数组的解决方案。
我该如何在Go中执行此操作?我正在使用Go gin框架。谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。