MongoDB向数组批量推送对象的update语句错误修正求助
修正MongoDB数组更新语句
你的问题出在使用$push时直接传入了数组,这会导致整个newStudents数组被作为单个元素添加到students数组中,而非逐个插入新学生对象。
要实现将数组中的每个元素分别推入目标数组,需要使用$push配合$each操作符,修改后的查询语句如下:
Students.update( { "_id": "btv7865reVGlksabv" }, { $push: { "students": { $each: newStudents } } } );
补充说明
- 若使用较新版本的MongoDB驱动,更推荐语义更明确的
updateOne方法(仅更新匹配到的第一个文档):
Students.updateOne( { "_id": "btv7865reVGlksabv" }, { $push: { "students": { $each: newStudents } } } );
$each操作符会遍历newStudents数组,将其中的每个对象依次添加到students数组末尾,最终文档结构会变为:
{ "_id": "btv7865reVGlksabv", "students": [ { "name": "John", "age": 30 }, { "name": "Henry", "age": 25 }, { "name": "Mike", "age": 22 }, { "name": "Kim", "age": 20 } ] }
内容的提问来源于stack exchange,提问作者StormTrooper
相关产品推荐
相关产品推荐

