mongodb,在多层嵌套数组中插入(更新)符合条件的元素

Users.findOneAndUpdate({
            user_id: user_id
        }, {
                
                $push: {
                    "chat.$[item].record": {
                        "role": 'me',
                        "item_record": item_record,
                        "item_time": item_time
                    }
                 }
           
        }, {
            arrayFilters: [{
                
                "item":{
                    $type:"object"
                },
                "item.ta_id": ta_id
               
            }]
        }, function(err) {
            if (err) {
                ...........
            } else {
                ...........
            }
        })
    })

在先前的本地测试中没有任何问题,就是利用arrayFilters,简单地插入数据到特定的位置,但是现在报错了,非常离谱...


{ MongoError: exception: cannot use the part (chat of chat.$[item].record) to traverse the element ({chat: [ { is_hiden: false, ta_id: "1619759159250", ta_img: "/public/image/users/test.png", me_id: "1619758422666", record: [ { role: "ta", item_record: "(你好)" } ], char_time: 1619941310624.0 } ]})

 

本地和服务器的数据库版本,表结构的设计是完全一样的吗?

注意版本问题,arrayfilter似乎只有在3.6版本以上才能使用

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y