MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Cập nhật Mongo bên trong một mảng lồng nhau kép

Hiện tại (MongoDB> =3.6) có một cách để thực hiện việc này với arrayFilters $ [số nhận dạng] .

Ví dụ dưới đây đang sử dụng mongoose và sẽ thêm một mục vào một mảng bên trong một mảng lồng nhau kép. Một bài viết hay giải thích điều này đây .

  const blogPost = await BlogPost.create({
    title    : 'A Node.js Perspective on MongoDB 3.6: Array Filters',
    comments : [
      { author : 'Foo', text : 'This is awesome!', replies : { name : 'George', seenBy : ['Pacey'] } },
      { author : 'Bar', text : 'Where are the upgrade docs?', replies : { name : 'John', seenBy : ['Jenny'] } }
    ]
  });

  const updatedPost = await BlogPost.findOneAndUpdate({ _id : blogPost._id }, {
    $addToSet : {
      'comments.$[comment].replies.$[reply].seenBy' : 'Jenny'
    }
  }, {
    arrayFilters : [{ 'comment.author' : 'Foo' }, { 'reply.name' : 'George' }],
    new          : true
  });

  console.log(updatedPost.comments[0].replies);


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose kết nối với tập hợp bản sao

  2. MongoDB + Web App:Cơ sở dữ liệu cho mỗi người dùng

  3. Sử dụng biến với regex để tìm dữ liệu trong mongodb (ứng dụng Meteor)

  4. Mongoengine, chỉ lấy lại một số MapField

  5. Cập nhật Mongodb với upert không thành công