我在理解 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)},
}},
}
- 1 回答
- 0 关注
- 75 浏览
添加回答
举报
0/150
提交
取消