Uncategorized

MongoDB: Tạo mới Document

MongoDB: Tạo mới Document

| |

MongoDB cung cấp phương thức insert() (và 2 cách nữa) cho việc thêm documents vào database.

MongoDB cung cấp ba phương thức sau để thêm dữ liệu vào db:

  • insert()
  • insertOne()
  • insertMany()

Phương thức insert()

insert() method thêm một hay nhiều document vào collection. Mỗi document là một tham số, giống như chúng ta đã làm ở bài trước:

db.collectionName.insert({name: "value"})

Ở ví dụ trên, document là {name: “value”}. Đây là môt định dạng JSON. Bao gồm một cặp key/value, và được đóng mở bằng dấu {}.

MongoDB sử dụng kiểu JSON để lưu trữ dữ liệu, cho nên insert documents sẽ ở dạng này:

db.cast.insert({name: "Chris Evans"})

Bây giờ, nếu chúng ta show collection cast, hai document sau sẽ xuất hiện:

> db.cast.find()
{ "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "name" : "Brad Pitt" }
{ "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "name" : "Chris Evans" }

Trường _id mà MongoDB cung cấp có giá trị là  12 byte ObjectId. Được tạo nên theo cấu trúc sau:

  • 4 byte giá trị biểu thị số giây theo Unix epoch
  • 3 byte định danh máy
  • 2 byte process id
  • 3 byte bộ đếm,  được bắt đầu bằng một giá trị ngẫu nhiên

(Tham khảo https://mongodb.github.io/node-mongodb-native/2.0/tutorials/objectid/ để hiểu rõ hơn về ObjectId)

Tạo mutiple Documents

Chúng ta có thể insert nhiều documents với chỉ một phương thức insert().

Trong ví dụ này, chúng ta sẽ thêm 3 documents:

db.cast.insert([
  {name: "Margot Robbie"},
  {name: "Leonardo DiCaprio"},
  {name: "Jack Black"},
])

Lưu ý rằng documents được thêm bằng một mảng. Đóng mở ngoặc [], và được phân cách bằng dấu phẩy

Chạy đoạn code trên sẽ cho ra kết quả:

BulkWriteResult({
  "writeErrors" : [ ],
  "writeConcernErrors" : [ ],
  "nInserted" : 3,
  "nUpserted" : 0,
  "nMatched" : 0,
  "nModified" : 0,
  "nRemoved" : 0,
  "upserted" : [ ]
})

Embedded Documents

Documents có thể chứa các document khác, mảng hay là mảng các documents

db.cast.insert({
  name: "Matt Damon",
  age: 48,
  movies: [
    {
      movie: "The Martian",
      year: 2015,
      genre: "Drama"
    }
    {
      movie: "Good Will Hunting",
      year: 1997,
      genre: "Drama"
    }
  ]
})

Kết quả:

WriteResult({ "nInserted" : 1 })

Phương thức InsertOne()

Chúng ta có thể sử dụng insertOne() để thêm một document vào collection:

db.director.insertOne({_id: 1, name: "Steven Spielberg", age:  72, children: 6})

Embedded Documents

Cũng giống như insert(), chúng ta có thể lồng document:

db.cast.insert({
  name: "Matt Damon",
  age: 48,
  movies: [
    {
      movie: "The Martian",
      year: 2015,
      genre: "Drama"
    }{
      movie: "Good Will Hunting",
      year: 1997,
      genre: "Drama"
    }
  ]
})

Phương thức insertMany()

Giống như tên gọi của nó, chúng ta có thể sử dụng insertMany() để insert multiple documents:

db.director.insertMany([
  {
    _id: 2,
    name: "Christopher Nolan",
    age: 49,
    children: 4
  },
  {
    _id: 3,
    name: "Quentin Tarantino",
    age: 56,
    children: 0
  },
  {
    _id: 4,
    name: "Jane Campion",
    age: 65,
    children: 2
  }.
])

Kết quả đầu ra sẽ khác so với khi sử dụng insert():

{
  "acknowledged" : true,
  "insertedIds" : [
    2,
    3,
    4,
  ]
}

Embedded Documents

db.cast.insert({
  [
    {
      name: "Vanessa Kirby",
      age: 31,
      movies: [
        {
          movie: "Hobbs And Shaw",
          year: 2019,
          genre: "Action"
        }{
          movie: "Mission: Impossible – Fallout",
          year: 2018,
          genre: "Action"
        }
      ]
    },
    {
      name: "Keanu Reeves",
      age: 54,
      movies: [
        {
          movie: "John Wick: Chapter 3 – Parabellum",
          year: 2019,
          genre: "Action"
        }{
          movie: "Toy Story 4",
          year: 2019,
          genre: "Animation"
        }
      ]
    },
    {
      name: "Adam Sandler",
      age: 52,
      movies: [
        {
          movie: "50 First Dates",
          year: 2004,
          genre: "Romance"
        }{
          movie: "Murder Mystery",
          year: 2019,
          genre: "Mystery/Crime"
        }
      ]
    },
  ]
})

kết quả:

{
  "acknowledged": true,
  "insertedIds": [
    ObjectId("578217c248ef8c6b3ffb015a"),
    ObjectId("578217c248ef8c6b3ffb015b"),
    ObjectId("578217c248ef8c6b3ffb015c"),
  ]
}

 

    Previous

    MongoDB – tạo mới Collection

    MongoDB: Truy vấn trong Collection

    Next

    Leave a Comment

    Subscribe

    A lead capture sample form