You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 16:36:01