MongoDB Go驱动使用$push插入数组时出现students.0嵌套问题如何解决
问题根因
你使用的$push操作符默认会将传入的整个值作为单个元素追加到目标数组末尾。你传入的是objIDs数组,所以整个数组被当成了一个元素存入students数组的0号下标,就出现了students.0的嵌套结构。
解决方案
分两种场景选择对应调整方式:
- 场景1:需要保留
students数组原有数据,仅追加objIDs内的所有元素
给$push搭配$each修饰符,会自动展开objIDs数组,把里面的每个ObjectID逐个追加到students中:_, err = swapStruct.ReferenceCollection.UpdateByID(ctx, swapStruct.ReferenceID, bson.D{ {"$push", bson.D{ {"students", bson.D{ {"$each", objIDs}, }}, }}, }) - 场景2:不需要保留
students原有数据,直接将students字段的值设为objIDs数组
直接用$set操作符替换$push即可:_, err = swapStruct.ReferenceCollection.UpdateByID(ctx, swapStruct.ReferenceID, bson.D{ {"$set", bson.D{{"students", objIDs}}}, })
内容的提问来源于stack exchange,提问作者cordmana
相关产品推荐
相关产品推荐

