为了账号安全,请及时绑定邮箱和手机立即绑定

$push字符串作为 mongo 文档中的数组

$push字符串作为 mongo 文档中的数组

Go
交互式爱情 2022-09-19 21:17:34
我在理解 Go 中的数组时遇到了困难,尤其是对于 graphql 和 mongo。有了JS,这一切对我来说将是轻而易举的,但我想知道你是否可以看看我拥有的东西并指出显而易见的事情!我正在寻找一个形状如下的物体:time├── login│   ├── 0│   │   └── "2021-08-16T20:11:54-07:00"│   ├── 1│   │   └── "2021-08-16T20:11:54-07:00"│   └── 2        └── "2021-08-16T20:11:54-07:00"模型.go:type Time struct {    Login []string}type User struct {    ID       graphql.ID    Time     Time}模式.graphql:type Time {  login: [String!]!}type User {  id:      ID!  time:    Time!}数据库.go:filter := bson.D{{Key: "email", Value: email}}arr := [1]string{time.Now().Format(time.RFC3339)}update := bson.D{  {Key: "$push", Value: bson.D{    {Key: "time.login", Value: arr},  }},}result, err := collection.UpdateOne(ctx, filter, update)我也尝试过:update := bson.D{  {Key: "$push", Value: bson.D{    {Key: "time.login", Value: time.Now().Format(time.RFC3339)},  }},}result, err := collection.UpdateOne(ctx, filter, update)但总是以相同的错误告终:error="write exception: write errors: [The field 'time.login' must be an array but is of type null in document {_id: ObjectId('611b28fabffe7f3694bc86dc')}]"
查看完整描述

1 回答

?
冉冉说

TA贡献1877条经验 获得超1个赞

[1]string{}是一个数组。 是一个切片。两者是不同的。数组是固定大小的对象。切片可以动态增大/缩小。[]string{}


在这种情况下,您也不应该使用,因为获取一个值,而不是一个切片:$push


update := bson.D{

  {Key: "$push", Value: bson.D{

    {Key: "time.login", Value: time.Now().Format(time.RFC3339)},

  }},

}


查看完整回答
反对 回复 2022-09-19
  • 1 回答
  • 0 关注
  • 75 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信