mongodb中内嵌数组的增删改查

- 日理万妓 2021-09-29 09:12 352阅读 0赞

mongodb中数据结构如下:

  1. {
  2. "_id": ObjectId("5b447403e0c7343f8c7d934c"),
  3. "student": "张三",
  4. "Class_Array": [{
  5. "Class_id": ObjectId("5b4475404fec79358cb3a611"),
  6. "Class_Name": "语文",
  7. "Class_Teacher": "李四"
  8. },
  9. {
  10. "Class_id": ObjectId("5b4475404fec79358cb3a611"),
  11. "Class_Name": "数学",
  12. "Class_Teacher": "王五"
  13. }
  14. ]
  15. }

1、数组库表中新加数据

  1. db.student.insert({
  2. "student": "张三",
  3. "Class_Array": [{
  4. "Class_id": ObjectId("5b4475404fec79358cb3a611"),
  5. "Class_Name": "语文",
  6. "Class_Teacher": "李四"
  7. },
  8. {
  9. "Class_id": ObjectId("5b4475404fec79358cb3a611"),
  10. "Class_Name": "数学",
  11. "Class_Teacher": "王五"
  12. }
  13. ]
  14. })

2、更新class_array(往里面添加一个对象)

  1. db.student.update({ student: "张三"},{ $addToSet: {Class_Array:{ Class_Name: "英语", Class_Teacher: "王二"} }})

注意:$addToSet为去重复添加(如果数据库中存在相同的插入对象,那么$addToSet将不会添加新的这个对象,改为$push即可添加成功)

3、删除($pull)

删除Class_Name为语文的这个对象

  1. db.student.update({ student: "张三",},{ $pull: {Class_Array:{ Class_id: ObjectId("5b4475404fec79358cb3a611"),Class_Name: "语文", Class_Teacher: "李四"} } })

3、修改($set)

  1. db.student.update({ student: "张三",'Class_Array.Class_Name':'数学'},{ $set: {'Class_Array.$.Class_Name':'数学修改'} })

注:$set操作符执行后,如果记录匹配到多条,用$只进行了第一个元素的更改,需要多条修改那么用$[],如果指定下标修改,那么把$修改为元素的下标即可,索引从0开始,update修改也只是修改匹配的第一条记录,如果要多条,使用updateMany()或者options设置为multi:true

转载于:https://www.cnblogs.com/KnowEditByW/p/9290593.html

发表评论

表情:
评论列表 (有 0 条评论,352人围观)

还没有评论,来说两句吧...

相关阅读