Tài liệu mongodb có thể chứa tài liệu khác không?

Khi sử dụng, bạn sẽ dành phần lớn thời gian để quản lý theo cách này hay cách khác. Cho dù bạn đang tạo tài liệu mới và thêm chúng vào bộ sưu tập, truy xuất tài liệu, cập nhật dữ liệu hay cắt bớt các mục cũ, thì tài liệu vẫn là trung tâm của mô hình MongoDB

Trong hướng dẫn này, chúng tôi sẽ đề cập đến các tài liệu MongoDB là gì và sau đó đề cập đến các hoạt động phổ biến mà bạn có thể sẽ cần biết để quản lý một tài liệu MongoDB.

LIÊN QUAN ĐẾN PRISMA. IO

Nếu bạn đang sử dụng MongoDB, hãy kiểm tra trình kết nối MongoDB của Prisma. Bạn có thể tự tin sử dụng Prisma Client để quản lý cơ sở dữ liệu MongoDB sản xuất

Để bắt đầu làm việc với MongoDB và Prisma, hãy xem hướng dẫn bắt đầu từ đầu của chúng tôi hoặc cách thêm vào một dự án hiện có

Prisma là bộ công cụ cơ sở dữ liệu mã nguồn mở dành cho Typescript và Node. js nhằm mục đích giúp các nhà phát triển ứng dụng làm việc hiệu quả và tự tin hơn khi làm việc với cơ sở dữ liệu

Tài liệu MongoDB là gì?

Trong MongoDB, tất cả dữ liệu trong cơ sở dữ liệu và bộ sưu tập được lưu trữ trong tài liệu. Vì các bộ sưu tập không chỉ định một yêu cầu theo mặc định, các tài liệu trong một bộ sưu tập có thể chứa cấu trúc phức tạp tùy ý và không cần khớp với định dạng được sử dụng bởi các tài liệu anh chị em. Điều này mang lại sự linh hoạt đáng kinh ngạc và cho phép lược đồ phát triển một cách hữu cơ khi các yêu cầu của ứng dụng thay đổi

Bản thân các tài liệu MongoDB sử dụng định dạng tuần tự hóa dữ liệu BSON, một biểu diễn nhị phân của Ký hiệu đối tượng JavaScript JSON. Điều này cung cấp một cấu trúc có tổ chức với các loại dữ liệu được xác định có thể được truy vấn và vận hành theo chương trình

Các tài liệu BSON được biểu thị bằng một cặp dấu ngoặc nhọn (_______0_______5) chứa các cặp khóa-giá trị. Trong BSON, các cặp dữ liệu này được gọi là trường và giá trị của nó. Trường có trước và được biểu thị bằng một chuỗi. Giá trị có thể là bất kỳ loại dữ liệu BSON hợp lệ nào. Dấu hai chấm (

WriteResult({ "nInserted" : 1 })

6) ngăn cách trường với giá trị của nó. Dấu phẩy được sử dụng để phân tách từng trường và cặp giá trị với nhau

Ví dụ, đây là một tài liệu BSON hợp lệ mà MongoDB có thể hiểu được

{

_id: 80380,

vehicle_type: "car",

mileage: 7377.80,

color: "blue",

markets: [

"US",

"UK"

],

options: {

transmission: "automatic",

num_doors: 4,

power_windows: true

}

}

Ở đây, chúng ta có thể thấy khá nhiều loại

  • WriteResult({ "nInserted" : 1 })

    7 là một số nguyên
  • WriteResult({ "nInserted" : 1 })

    8 và

    WriteResult({ "nInserted" : 1 })

    9 là các chuỗi
  • db.students.insert(

    [

    {

    first_name: "Brian",

    last_name: "McMantis",

    dob: new Date("September 18, 2010"),

    grade_level: 2

    },

    {

    first_name: "Leah",

    last_name: "Drake",

    dob: new Date("October 03, 2009")

    }

    ]

    )

    0 là phao
  • db.students.insert(

    [

    {

    first_name: "Brian",

    last_name: "McMantis",

    dob: new Date("September 18, 2010"),

    grade_level: 2

    },

    {

    first_name: "Leah",

    last_name: "Drake",

    dob: new Date("October 03, 2009")

    }

    ]

    )

    1 là một mảng các chuỗi
  • db.students.insert(

    [

    {

    first_name: "Brian",

    last_name: "McMantis",

    dob: new Date("September 18, 2010"),

    grade_level: 2

    },

    {

    first_name: "Leah",

    last_name: "Drake",

    dob: new Date("October 03, 2009")

    }

    ]

    )

    2 chứa một tài liệu lồng nhau với các giá trị bao gồm một chuỗi, một số nguyên và một boolean

Do tính linh hoạt này, tài liệu là một phương tiện khá linh hoạt để lưu trữ dữ liệu. Các trường mới có thể được thêm vào dễ dàng, các tài liệu có thể được nhúng vào nhau và độ phức tạp về cấu trúc khớp chính xác với dữ liệu được lưu trữ

Cách tạo tài liệu mới

Để tạo một tài liệu mới, hãy thay đổi cơ sở dữ liệu nơi bạn muốn lưu trữ tài liệu đã tạo. Chúng tôi sẽ sử dụng cơ sở dữ liệu

db.students.insert(

[

{

first_name: "Brian",

last_name: "McMantis",

dob: new Date("September 18, 2010"),

grade_level: 2

},

{

first_name: "Leah",

last_name: "Drake",

dob: new Date("October 03, 2009")

}

]

)

3 cho mục đích trình diễn trong bài viết này

use school

Bạn cũng sẽ muốn chọn bộ sưu tập nơi bạn muốn chèn tài liệu. Như với cơ sở dữ liệu, bạn không cần phải tạo bộ sưu tập một cách rõ ràng nơi bạn muốn chèn tài liệu. MongoDB sẽ tự động tạo nó khi dữ liệu đầu tiên được ghi. Đối với ví dụ này, chúng tôi sẽ sử dụng một bộ sưu tập có tên là

db.students.insert(

[

{

first_name: "Brian",

last_name: "McMantis",

dob: new Date("September 18, 2010"),

grade_level: 2

},

{

first_name: "Leah",

last_name: "Drake",

dob: new Date("October 03, 2009")

}

]

)

4

Bây giờ bạn đã biết nơi tài liệu sẽ được lưu trữ, bạn có thể chèn một tài liệu mới bằng một trong các phương pháp sau

Sử dụng phương pháp db.students.insert( [ { first_name: "Brian", last_name: "McMantis", dob: new Date("September 18, 2010"), grade_level: 2 }, { first_name: "Leah", last_name: "Drake", dob: new Date("October 03, 2009") } ])5

Phương thức

db.students.insert(

[

{

first_name: "Brian",

last_name: "McMantis",

dob: new Date("September 18, 2010"),

grade_level: 2

},

{

first_name: "Leah",

last_name: "Drake",

dob: new Date("October 03, 2009")

}

]

)

5 cho phép bạn chèn một hoặc nhiều tài liệu vào bộ sưu tập mà nó được gọi

Để chèn một tài liệu, hãy chuyển tài liệu cho phương thức bằng cách gọi nó trên bộ sưu tập. Ở đây, chúng tôi chèn một tài liệu mới cho một sinh viên tên Ashley

db.students.insert(

{

first_name: "Ashley",

last_name: "Jenkins",

dob: new Date("January 08, 2003"),

grade_level: 8

}

)

WriteResult({ "nInserted" : 1 })

Nếu bạn muốn chèn nhiều tài liệu cùng lúc, thay vì chuyển một tài liệu tới

db.students.insert(

[

{

first_name: "Brian",

last_name: "McMantis",

dob: new Date("September 18, 2010"),

grade_level: 2

},

{

first_name: "Leah",

last_name: "Drake",

dob: new Date("October 03, 2009")

}

]

)

5, hãy chuyển một mảng tài liệu. Chúng tôi có thể thêm hai tài liệu mới cho sinh viên tên Brian và Leah

db.students.insert(

[

{

first_name: "Brian",

last_name: "McMantis",

dob: new Date("September 18, 2010"),

grade_level: 2

},

{

first_name: "Leah",

last_name: "Drake",

dob: new Date("October 03, 2009")

}

]

)

BulkWriteResult({

"writeErrors" : [ ],

"writeConcernErrors" : [ ],

"nInserted" : 2,

"nUpserted" : 0,

"nMatched" : 0,

"nModified" : 0,

"nRemoved" : 0,

"upserted" : [ ]

})

Vì chúng tôi đã thực hiện một số lượng lớn, giá trị trả về của chúng tôi là một

db.students.insert(

[

{

first_name: "Brian",

last_name: "McMantis",

dob: new Date("September 18, 2010"),

grade_level: 2

},

{

first_name: "Leah",

last_name: "Drake",

dob: new Date("October 03, 2009")

}

]

)

8 thay vì đối tượng

db.students.insert(

[

{

first_name: "Brian",

last_name: "McMantis",

dob: new Date("September 18, 2010"),

grade_level: 2

},

{

first_name: "Leah",

last_name: "Drake",

dob: new Date("October 03, 2009")

}

]

)

9 mà chúng tôi đã thấy trước đây

Mặc dù phương pháp

db.students.insert(

[

{

first_name: "Brian",

last_name: "McMantis",

dob: new Date("September 18, 2010"),

grade_level: 2

},

{

first_name: "Leah",

last_name: "Drake",

dob: new Date("October 03, 2009")

}

]

)

5 linh hoạt, nhưng nó đã không được dùng trong nhiều trình điều khiển MongoDB để ủng hộ hai phương pháp sau

Sử dụng phương pháp BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 2, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] (adsbygoogle = window.adsbygoogle || []).push({}); })1

Phương pháp

BulkWriteResult({

"writeErrors" : [ ],

"writeConcernErrors" : [ ],

"nInserted" : 2,

"nUpserted" : 0,

"nMatched" : 0,

"nModified" : 0,

"nRemoved" : 0,

"upserted" : [ ]

})

1 có thể được sử dụng để chèn một tài liệu. Không giống như phương pháp

db.students.insert(

[

{

first_name: "Brian",

last_name: "McMantis",

dob: new Date("September 18, 2010"),

grade_level: 2

},

{

first_name: "Leah",

last_name: "Drake",

dob: new Date("October 03, 2009")

}

]

)

5, nó chỉ có thể chèn một tài liệu tại một thời điểm, điều này làm cho hành vi của nó dễ đoán hơn một chút

Cú pháp giống như khi bạn sử dụng

db.students.insert(

[

{

first_name: "Brian",

last_name: "McMantis",

dob: new Date("September 18, 2010"),

grade_level: 2

},

{

first_name: "Leah",

last_name: "Drake",

dob: new Date("October 03, 2009")

}

]

)

5 để thêm một tài liệu. Chúng ta có thể thêm một sinh viên tên là Naomi

db.students.insertOne(

{

first_name: "Naomi",

last_name: "Pyani"

}

)

{

"acknowledged" : true,

"insertedId" : ObjectId("60e877914655cbf49ff7cb86")

}

Không giống như với

db.students.insert(

[

{

first_name: "Brian",

last_name: "McMantis",

dob: new Date("September 18, 2010"),

grade_level: 2

},

{

first_name: "Leah",

last_name: "Drake",

dob: new Date("October 03, 2009")

}

]

)

5, phương thức

BulkWriteResult({

"writeErrors" : [ ],

"writeConcernErrors" : [ ],

"nInserted" : 2,

"nUpserted" : 0,

"nMatched" : 0,

"nModified" : 0,

"nRemoved" : 0,

"upserted" : [ ]

})

1 trả về một tài liệu chứa một số thông tin hữu ích bổ sung. Nó xác nhận rằng ghi đã được cụm xác nhận và nó bao gồm ID đối tượng được gán cho tài liệu vì chúng tôi không cung cấp ID

Sử dụng phương pháp BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 2, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ]})7

Để bao gồm các tình huống mà bạn muốn chèn nhiều tài liệu cùng một lúc, phương pháp

BulkWriteResult({

"writeErrors" : [ ],

"writeConcernErrors" : [ ],

"nInserted" : 2,

"nUpserted" : 0,

"nMatched" : 0,

"nModified" : 0,

"nRemoved" : 0,

"upserted" : [ ]

})

7 hiện được khuyến nghị. Giống như khi chèn nhiều tài liệu với

db.students.insert(

[

{

first_name: "Brian",

last_name: "McMantis",

dob: new Date("September 18, 2010"),

grade_level: 2

},

{

first_name: "Leah",

last_name: "Drake",

dob: new Date("October 03, 2009")

}

]

)

5,

BulkWriteResult({

"writeErrors" : [ ],

"writeConcernErrors" : [ ],

"nInserted" : 2,

"nUpserted" : 0,

"nMatched" : 0,

"nModified" : 0,

"nRemoved" : 0,

"upserted" : [ ]

})

7 sẽ lấy một mảng tài liệu

Chúng tôi có thể thêm ba sinh viên mới tên là Jasmine, Michael và Toni

db.students.insertMany(

[

{

first_name: "Jasmine",

last_name: "Took",

dob: new Date("April 11, 2011")

},

{

first_name: "Michael",

last_name: "Rodgers",

dob: new Date("February 25, 2008"),

grade_level: 6

},

{

first_name: "Toni",

last_name: "Fowler"

}

]

)

{

"acknowledged" : true,

"insertedIds" : [

ObjectId("60e8792d4655cbf49ff7cb87"),

ObjectId("60e8792d4655cbf49ff7cb88"),

ObjectId("60e8792d4655cbf49ff7cb89")

]

}

Như với

BulkWriteResult({

"writeErrors" : [ ],

"writeConcernErrors" : [ ],

"nInserted" : 2,

"nUpserted" : 0,

"nMatched" : 0,

"nModified" : 0,

"nRemoved" : 0,

"upserted" : [ ]

})

1,

BulkWriteResult({

"writeErrors" : [ ],

"writeConcernErrors" : [ ],

"nInserted" : 2,

"nUpserted" : 0,

"nMatched" : 0,

"nModified" : 0,

"nRemoved" : 0,

"upserted" : [ ]

})

7 trả về một tài liệu xác nhận việc ghi và cung cấp một mảng chứa các ID đã được gán cho các tài liệu được chèn vào

Cách truy vấn các tài liệu hiện có

Truy vấn tài liệu là một chủ đề khá rộng đảm bảo có bài viết riêng. Bạn có thể tìm thấy chi tiết về cách xây dựng các truy vấn để truy xuất các loại tài liệu khác nhau trong hướng dẫn của chúng tôi về truy vấn dữ liệu trong MongoDB

Mặc dù các chi tiết tốt nhất nên để lại trong bài viết được liên kết ở trên, nhưng ít nhất chúng ta có thể trình bày các phương thức mà MongoDB cung cấp để truy vấn tài liệu. Cách chính để tìm nạp tài liệu từ MongoDB là gọi phương thức

db.students.insertOne(

{

first_name: "Naomi",

last_name: "Pyani"

}

)

3 trên bộ sưu tập được đề cập

Chẳng hạn, để thu thập tất cả các tài liệu từ

db.students.insert(

[

{

first_name: "Brian",

last_name: "McMantis",

dob: new Date("September 18, 2010"),

grade_level: 2

},

{

first_name: "Leah",

last_name: "Drake",

dob: new Date("October 03, 2009")

}

]

)

4, bạn có thể gọi

db.students.insertOne(

{

first_name: "Naomi",

last_name: "Pyani"

}

)

3 mà không có đối số

use school

0

use school

1

Để làm cho đầu ra dễ đọc hơn, bạn cũng có thể xâu chuỗi phương thức

db.students.insertOne(

{

first_name: "Naomi",

last_name: "Pyani"

}

)

6 sau

db.students.insertOne(

{

first_name: "Naomi",

last_name: "Pyani"

}

)

3

use school

2_______10_______3

Bạn có thể thấy rằng một trường

WriteResult({ "nInserted" : 1 })

7 đã được thêm vào mỗi tài liệu. MongoDB yêu cầu một

WriteResult({ "nInserted" : 1 })

7 duy nhất cho mỗi tài liệu trong một bộ sưu tập. Nếu bạn không cung cấp một cái khi tạo đối tượng, nó sẽ thêm một cái cho bạn. Bạn có thể sử dụng ID này để truy xuất một đối tượng một cách đáng tin cậy

use school

4

use school

5

Bạn có thể tìm hiểu thêm về các cách truy vấn dữ liệu khác nhau với bài viết được liên kết ở trên

Cách cập nhật tài liệu hiện có

Nhiều hoặc hầu hết các trường hợp sử dụng cho cơ sở dữ liệu yêu cầu bạn có thể sửa đổi dữ liệu hiện có trong cơ sở dữ liệu. Một trường có thể cần được cập nhật để phản ánh một giá trị mới hoặc bạn có thể cần thêm thông tin bổ sung vào một tài liệu hiện có khi nó có sẵn

MongoDB sử dụng một số phương pháp liên quan để cập nhật các tài liệu hiện có

  • {

    "acknowledged" : true,

    "insertedId" : ObjectId("60e877914655cbf49ff7cb86")

    }

    0. Cập nhật một tài liệu trong một bộ sưu tập dựa trên bộ lọc được cung cấp
  • {

    "acknowledged" : true,

    "insertedId" : ObjectId("60e877914655cbf49ff7cb86")

    }

    1. Cập nhật nhiều tài liệu trong một bộ sưu tập phù hợp với bộ lọc được cung cấp
  • {

    "acknowledged" : true,

    "insertedId" : ObjectId("60e877914655cbf49ff7cb86")

    }

    2. Thay thế toàn bộ tài liệu trong bộ sưu tập dựa trên bộ lọc được cung cấp

Chúng tôi sẽ đề cập đến cách sử dụng từng loại này để thực hiện các loại cập nhật khác nhau

Cập nhật toán tử

Trước khi xem xét từng phương pháp cập nhật tài liệu, chúng ta nên xem qua một số toán tử cập nhật có sẵn

  • {

    "acknowledged" : true,

    "insertedId" : ObjectId("60e877914655cbf49ff7cb86")

    }

    3. Đặt giá trị của trường thành ngày hiện tại, dưới dạng ngày hoặc loại dấu thời gian
    • cú pháp.

      {

      "acknowledged" : true,

      "insertedId" : ObjectId("60e877914655cbf49ff7cb86")

      }

      4
  • {

    "acknowledged" : true,

    "insertedId" : ObjectId("60e877914655cbf49ff7cb86")

    }

    5. Tăng giá trị của trường theo số lượng đã đặt
    • cú pháp.

      {

      "acknowledged" : true,

      "insertedId" : ObjectId("60e877914655cbf49ff7cb86")

      }

      6
  • {

    "acknowledged" : true,

    "insertedId" : ObjectId("60e877914655cbf49ff7cb86")

    }

    7. Cập nhật giá trị của trường nếu giá trị được chỉ định nhỏ hơn giá trị hiện tại
    • cú pháp.

      {

      "acknowledged" : true,

      "insertedId" : ObjectId("60e877914655cbf49ff7cb86")

      }

      8
  • {

    "acknowledged" : true,

    "insertedId" : ObjectId("60e877914655cbf49ff7cb86")

    }

    9. Cập nhật giá trị của trường nếu giá trị được chỉ định lớn hơn giá trị hiện tại
    • cú pháp.

      db.students.insertMany(

      [

      {

      first_name: "Jasmine",

      last_name: "Took",

      dob: new Date("April 11, 2011")

      },

      {

      first_name: "Michael",

      last_name: "Rodgers",

      dob: new Date("February 25, 2008"),

      grade_level: 6

      },

      {

      first_name: "Toni",

      last_name: "Fowler"

      }

      ]

      )

      0
  • db.students.insertMany(

    [

    {

    first_name: "Jasmine",

    last_name: "Took",

    dob: new Date("April 11, 2011")

    },

    {

    first_name: "Michael",

    last_name: "Rodgers",

    dob: new Date("February 25, 2008"),

    grade_level: 6

    },

    {

    first_name: "Toni",

    last_name: "Fowler"

    }

    ]

    )

    1. Cập nhật giá trị của trường bằng cách nhân nó với số đã cho
    • cú pháp.

      db.students.insertMany(

      [

      {

      first_name: "Jasmine",

      last_name: "Took",

      dob: new Date("April 11, 2011")

      },

      {

      first_name: "Michael",

      last_name: "Rodgers",

      dob: new Date("February 25, 2008"),

      grade_level: 6

      },

      {

      first_name: "Toni",

      last_name: "Fowler"

      }

      ]

      )

      2
  • db.students.insertMany(

    [

    {

    first_name: "Jasmine",

    last_name: "Took",

    dob: new Date("April 11, 2011")

    },

    {

    first_name: "Michael",

    last_name: "Rodgers",

    dob: new Date("February 25, 2008"),

    grade_level: 6

    },

    {

    first_name: "Toni",

    last_name: "Fowler"

    }

    ]

    )

    3. Đổi tên tên trường thành mã định danh mới
    • cú pháp.

      db.students.insertMany(

      [

      {

      first_name: "Jasmine",

      last_name: "Took",

      dob: new Date("April 11, 2011")

      },

      {

      first_name: "Michael",

      last_name: "Rodgers",

      dob: new Date("February 25, 2008"),

      grade_level: 6

      },

      {

      first_name: "Toni",

      last_name: "Fowler"

      }

      ]

      )

      4
  • db.students.insertMany(

    [

    {

    first_name: "Jasmine",

    last_name: "Took",

    dob: new Date("April 11, 2011")

    },

    {

    first_name: "Michael",

    last_name: "Rodgers",

    dob: new Date("February 25, 2008"),

    grade_level: 6

    },

    {

    first_name: "Toni",

    last_name: "Fowler"

    }

    ]

    )

    5. Thay thế giá trị của một trường bằng giá trị đã cho
    • cú pháp.

      db.students.insertMany(

      [

      {

      first_name: "Jasmine",

      last_name: "Took",

      dob: new Date("April 11, 2011")

      },

      {

      first_name: "Michael",

      last_name: "Rodgers",

      dob: new Date("February 25, 2008"),

      grade_level: 6

      },

      {

      first_name: "Toni",

      last_name: "Fowler"

      }

      ]

      )

      6
  • db.students.insertMany(

    [

    {

    first_name: "Jasmine",

    last_name: "Took",

    dob: new Date("April 11, 2011")

    },

    {

    first_name: "Michael",

    last_name: "Rodgers",

    dob: new Date("February 25, 2008"),

    grade_level: 6

    },

    {

    first_name: "Toni",

    last_name: "Fowler"

    }

    ]

    )

    7. Trong các hoạt động upsert, đặt giá trị của một trường nếu một tài liệu mới đang được tạo và không làm gì khác
    • cú pháp.

      db.students.insertMany(

      [

      {

      first_name: "Jasmine",

      last_name: "Took",

      dob: new Date("April 11, 2011")

      },

      {

      first_name: "Michael",

      last_name: "Rodgers",

      dob: new Date("February 25, 2008"),

      grade_level: 6

      },

      {

      first_name: "Toni",

      last_name: "Fowler"

      }

      ]

      )

      8
  • db.students.insertMany(

    [

    {

    first_name: "Jasmine",

    last_name: "Took",

    dob: new Date("April 11, 2011")

    },

    {

    first_name: "Michael",

    last_name: "Rodgers",

    dob: new Date("February 25, 2008"),

    grade_level: 6

    },

    {

    first_name: "Toni",

    last_name: "Fowler"

    }

    ]

    )

    9. Xóa một trường khỏi tài liệu
    • cú pháp.

      {

      "acknowledged" : true,

      "insertedIds" : [

      ObjectId("60e8792d4655cbf49ff7cb87"),

      ObjectId("60e8792d4655cbf49ff7cb88"),

      ObjectId("60e8792d4655cbf49ff7cb89")

      ]

      }

      0
  • {

    "acknowledged" : true,

    "insertedIds" : [

    ObjectId("60e8792d4655cbf49ff7cb87"),

    ObjectId("60e8792d4655cbf49ff7cb88"),

    ObjectId("60e8792d4655cbf49ff7cb89")

    ]

    }

    1. Trình giữ chỗ cho phần tử mảng đầu tiên thỏa mãn truy vấn
    • cú pháp.

      {

      "acknowledged" : true,

      "insertedIds" : [

      ObjectId("60e8792d4655cbf49ff7cb87"),

      ObjectId("60e8792d4655cbf49ff7cb88"),

      ObjectId("60e8792d4655cbf49ff7cb89")

      ]

      }

      2
  • {

    "acknowledged" : true,

    "insertedIds" : [

    ObjectId("60e8792d4655cbf49ff7cb87"),

    ObjectId("60e8792d4655cbf49ff7cb88"),

    ObjectId("60e8792d4655cbf49ff7cb89")

    ]

    }

    3. Trình giữ chỗ cho tất cả các phần tử mảng đáp ứng truy vấn
    • cú pháp.

      {

      "acknowledged" : true,

      "insertedIds" : [

      ObjectId("60e8792d4655cbf49ff7cb87"),

      ObjectId("60e8792d4655cbf49ff7cb88"),

      ObjectId("60e8792d4655cbf49ff7cb89")

      ]

      }

      4
  • {

    "acknowledged" : true,

    "insertedIds" : [

    ObjectId("60e8792d4655cbf49ff7cb87"),

    ObjectId("60e8792d4655cbf49ff7cb88"),

    ObjectId("60e8792d4655cbf49ff7cb89")

    ]

    }

    5. Thêm các giá trị vào mảng trừ khi chúng đã có sẵn
    • cú pháp.

      {

      "acknowledged" : true,

      "insertedIds" : [

      ObjectId("60e8792d4655cbf49ff7cb87"),

      ObjectId("60e8792d4655cbf49ff7cb88"),

      ObjectId("60e8792d4655cbf49ff7cb89")

      ]

      }

      6
  • {

    "acknowledged" : true,

    "insertedIds" : [

    ObjectId("60e8792d4655cbf49ff7cb87"),

    ObjectId("60e8792d4655cbf49ff7cb88"),

    ObjectId("60e8792d4655cbf49ff7cb89")

    ]

    }

    7. Loại bỏ phần tử đầu tiên hoặc cuối cùng của một mảng
    • cú pháp.

      {

      "acknowledged" : true,

      "insertedIds" : [

      ObjectId("60e8792d4655cbf49ff7cb87"),

      ObjectId("60e8792d4655cbf49ff7cb88"),

      ObjectId("60e8792d4655cbf49ff7cb89")

      ]

      }

      8
  • {

    "acknowledged" : true,

    "insertedIds" : [

    ObjectId("60e8792d4655cbf49ff7cb87"),

    ObjectId("60e8792d4655cbf49ff7cb88"),

    ObjectId("60e8792d4655cbf49ff7cb89")

    ]

    }

    9. Loại bỏ tất cả các phần tử của một mảng phù hợp với một điều kiện
    • cú pháp.

      use school

      00
  • use school

    01. Nối một giá trị vào một mảng
    • cú pháp.

      use school

      02
  • use school

    03. Xóa tất cả các phần tử đã chỉ định khỏi một mảng
    • cú pháp.

      use school

      04
  • use school

    05. Sửa đổi các toán tử

    {

    "acknowledged" : true,

    "insertedIds" : [

    ObjectId("60e8792d4655cbf49ff7cb87"),

    ObjectId("60e8792d4655cbf49ff7cb88"),

    ObjectId("60e8792d4655cbf49ff7cb89")

    ]

    }

    5 và

    use school

    01 để chúng thêm từng phần tử của một mảng thay vì một mảng dưới dạng một phần tử
    • cú pháp.

      use school

      08
  • use school

    09. Được sử dụng với

    use school

    05 và chỉ định vị trí mà toán tử

    use school

    01 nên chèn vào
    • cú pháp.

      use school

      12
  • use school

    13. Được sử dụng với

    use school

    05 và

    use school

    01 để giới hạn tổng số phần tử trong mảng
    • cú pháp.

      use school

      16
  • use school

    17. Được sử dụng với

    use school

    05 và

    use school

    01 để sắp xếp các phần tử mảng
    • cú pháp.

      use school

      20

Các toán tử cập nhật khác nhau này cho phép bạn cập nhật các trường khác nhau của tài liệu theo nhiều cách khác nhau

Cập nhật một tài liệu duy nhất trong một bộ sưu tập

Phương pháp

{

"acknowledged" : true,

"insertedId" : ObjectId("60e877914655cbf49ff7cb86")

}

0 của MongoDB được sử dụng để cập nhật một tài liệu trong một bộ sưu tập. Phương thức này có hai đối số bắt buộc cũng như một tài liệu chỉ định các đối số tùy chọn

Đối số đầu tiên là tài liệu chỉ định các điều kiện lọc sẽ được sử dụng để chọn tài liệu. Vì phương thức

{

"acknowledged" : true,

"insertedId" : ObjectId("60e877914655cbf49ff7cb86")

}

0 sửa đổi nhiều nhất một tài liệu trong bộ sưu tập, nên tài liệu đầu tiên thỏa mãn các điều kiện lọc sẽ được sử dụng

Đối số thứ hai chỉ định thao tác cập nhật sẽ được thực thi. Các hoạt động cập nhật được đưa ra ở trên có thể được chỉ định ở đây để thay đổi nội dung của tài liệu phù hợp

Đối số thứ ba là một tài liệu gồm nhiều tùy chọn khác nhau để sửa đổi hành vi của phương thức. Các giá trị tiềm năng quan trọng nhất là

  • use school

    23. Biến hoạt động thành thủ tục upsert bằng cách chèn tài liệu mới nếu bộ lọc không khớp với bất kỳ tài liệu hiện có nào
  • use school

    24. Một tài liệu xác định các quy tắc dành riêng cho ngôn ngữ sẽ áp dụng cho hoạt động

Ví dụ: chúng tôi có thể cập nhật một bản ghi học sinh mà chúng tôi lọc theo trường

WriteResult({ "nInserted" : 1 })

7 để đảm bảo rằng chúng tôi nhắm mục tiêu đúng tài liệu. Chúng tôi có thể đặt

use school

26 thành một giá trị mới

use school

6_______10_______7

Cập nhật nhiều tài liệu trong một bộ sưu tập

Phương thức

{

"acknowledged" : true,

"insertedId" : ObjectId("60e877914655cbf49ff7cb86")

}

1 của MongoDB hoạt động tương tự như phương thức

{

"acknowledged" : true,

"insertedId" : ObjectId("60e877914655cbf49ff7cb86")

}

0, nhưng thay vào đó cập nhật bất kỳ tài liệu nào khớp với bộ lọc đã cho thay vì dừng sau lần khớp đầu tiên

Cú pháp

{

"acknowledged" : true,

"insertedId" : ObjectId("60e877914655cbf49ff7cb86")

}

1 tuân theo chính xác cú pháp

{

"acknowledged" : true,

"insertedId" : ObjectId("60e877914655cbf49ff7cb86")

}

0, vì vậy điểm khác biệt duy nhất là phạm vi hoạt động

Ví dụ: nếu chúng tôi muốn thay đổi tất cả các trường hợp của "sáng tác" thành "viết" trong mảng

use school

31 trong tài liệu sưu tập

use school

32 của chúng tôi, chúng tôi có thể sử dụng một cái gì đó như thế này

use school

8

use school

9

Nếu bạn kiểm tra các tài liệu, mỗi trường hợp "sáng tác" nên được thay thế bằng "viết"

db.students.insert(

{

first_name: "Ashley",

last_name: "Jenkins",

dob: new Date("January 08, 2003"),

grade_level: 8

}

)

0_______14_______1

Thay thế một tài liệu

Phương pháp

{

"acknowledged" : true,

"insertedId" : ObjectId("60e877914655cbf49ff7cb86")

}

2 hoạt động tương tự như phương pháp

{

"acknowledged" : true,

"insertedId" : ObjectId("60e877914655cbf49ff7cb86")

}

0, nhưng thay thế toàn bộ tài liệu thay vì cập nhật từng trường riêng lẻ. Cú pháp giống như hai lệnh trước

Ví dụ: nếu Nancy Smith rời trường của bạn và bạn thay thế cô ấy bằng một giáo viên tên là Clara Newman dạy văn, bạn có thể nhập nội dung sau

db.students.insert(

{

first_name: "Ashley",

last_name: "Jenkins",

dob: new Date("January 08, 2003"),

grade_level: 8

}

)

2_______10_______7

Bạn có thể thấy rằng tài liệu phù hợp đã bị xóa và tài liệu được chỉ định đã thay thế nó

db.students.insert(

{

first_name: "Ashley",

last_name: "Jenkins",

dob: new Date("January 08, 2003"),

grade_level: 8

}

)

0_______14_______5

Cách xóa tài liệu

Xóa tài liệu khỏi bộ sưu tập cũng là một phần của vòng đời tài liệu. Để xóa tài liệu, bạn có thể sử dụng các phương pháp

use school

35 hoặc

use school

36. Chúng có cùng một cú pháp và chỉ khác nhau về số lượng tài liệu mà chúng thao tác trên đó.

Đối với hầu hết các phần, tất cả những gì bạn phải làm để xóa tài liệu bằng một trong hai phương pháp này là cung cấp cho nó một tài liệu bộ lọc chỉ định cách bạn muốn chọn tài liệu sẽ bị xóa. Phương thức

use school

35 sẽ xóa tối đa một tài liệu (bất kể bộ lọc tạo ra bao nhiêu kết quả phù hợp) trong khi phương thức

use school

36 xóa mọi tài liệu phù hợp với điều kiện bộ lọc

Ví dụ: để xóa một học sinh, bạn có thể cung cấp một

WriteResult({ "nInserted" : 1 })

7 để khớp chúng một cách rõ ràng

db.students.insert(

{

first_name: "Ashley",

last_name: "Jenkins",

dob: new Date("January 08, 2003"),

grade_level: 8

}

)

6_______14_______7

Nếu chúng tôi muốn xóa bất kỳ học sinh nào không có cấp lớp được chỉ định, chúng tôi có thể sử dụng phương thức

use school

36 để thay thế

db.students.insert(

{

first_name: "Ashley",

last_name: "Jenkins",

dob: new Date("January 08, 2003"),

grade_level: 8

}

)

8

db.students.insert(

{

first_name: "Ashley",

last_name: "Jenkins",

dob: new Date("January 08, 2003"),

grade_level: 8

}

)

9

Nếu chúng tôi kiểm tra, chúng tôi sẽ thấy rằng tất cả các học sinh còn lại có một cấp lớp được chỉ định

use school

0______0_______1

Phần kết luận

Học cách tạo, truy vấn, cập nhật và xóa tài liệu cung cấp cho bạn các kỹ năng cần thiết để quản lý hiệu quả các tài liệu trong MongoDB hàng ngày. Làm quen với các phương pháp thu thập và tài liệu khác nhau cũng như các toán tử cho phép bạn khớp và sửa đổi thông tin cho phép bạn thể hiện những suy nghĩ phức tạp mà hệ thống cơ sở dữ liệu có thể hiểu được

LIÊN QUAN ĐẾN PRISMA. IO

Nếu bạn đang sử dụng MongoDB, hãy kiểm tra trình kết nối MongoDB của Prisma. Bạn có thể tự tin sử dụng Prisma Client để quản lý cơ sở dữ liệu MongoDB sản xuất

Để bắt đầu làm việc với MongoDB và Prisma, hãy xem hướng dẫn bắt đầu từ đầu của chúng tôi hoặc cách thêm vào một dự án hiện có

Prisma là bộ công cụ cơ sở dữ liệu mã nguồn mở dành cho Typescript và Node. js nhằm mục đích giúp các nhà phát triển ứng dụng làm việc hiệu quả và tự tin hơn khi làm việc với cơ sở dữ liệu

Câu hỏi thường gặp

Tài liệu nhúng trong MongoDB là gì?

Một tài liệu được nhúng hoặc lồng trong MongoDB là một tài liệu chứa một tài liệu khác bên trong nó

Sau đây là một ví dụ về tài liệu được nhúng trong đó

use school

41 —được biểu thị là tài liệu phụ bằng dấu ngoặc nhọn bổ sung— có thể được truy cập bằng bản ghi

use school

42

WriteResult({ "nInserted" : 1 })

2

Giới hạn kích thước tài liệu tối đa của MongoDB là gì?

Kích thước tài liệu tối đa trong MongoDB là 16 megabyte

Giới hạn này giúp đảm bảo rằng một tài liệu không thể sử dụng quá nhiều RAM hoặc quá nhiều băng thông trong quá trình truyền.

Để lưu trữ tài liệu lớn hơn 16mb, MongoDB cung cấp

Làm cách nào để xóa tài liệu trong MongoDB?

Để xóa tài liệu, bạn có thể sử dụng phương pháp

use school

35 hoặc

use school

36. Chúng có cùng một cú pháp và chỉ khác nhau về số lượng tài liệu mà chúng thao tác trên đó.

Để xóa một tài liệu, cú pháp cơ bản sẽ như sau để xóa một tài liệu có tên cụ thể là

WriteResult({ "nInserted" : 1 })

7

db.students.insert(

{

first_name: "Ashley",

last_name: "Jenkins",

dob: new Date("January 08, 2003"),

grade_level: 8

}

)

6

Và để xóa nhiều tài liệu phù hợp với một tiêu chí nhất định, cú pháp tương tự

db.students.insert(

{

first_name: "Ashley",

last_name: "Jenkins",

dob: new Date("January 08, 2003"),

grade_level: 8

}

)

8

Làm cách nào để bạn thêm vào một tài liệu trong MongoDB?

Để sửa đổi tài liệu trong MongoDB, có một số

Cụ thể, để nối thêm dữ liệu mới vào tài liệu, bạn có thể sử dụng phương thức

{

"acknowledged" : true,

"insertedIds" : [

ObjectId("60e8792d4655cbf49ff7cb87"),

ObjectId("60e8792d4655cbf49ff7cb88"),

ObjectId("60e8792d4655cbf49ff7cb89")

]

}

5. Toán tử này thêm các giá trị vào mảng của tài liệu trừ khi chúng đã có sẵn

Làm cách nào để so sánh hai tài liệu trong MongoDB?

Không có phương pháp cụ thể để so sánh rõ ràng tài liệu này với tài liệu khác trong MongoDB. Nó có thể được thực hiện bằng cách định cấu hình một truy vấn so sánh sự bằng nhau giữa bất kỳ trường nào của tài liệu với các toán tử

So sánh cũng có thể được thực hiện bằng cách định cấu hình đường dẫn tổng hợp. Phương pháp này cho phép bạn tạo các giai đoạn

Khi nào chúng ta nên nhúng một tài liệu vào một tài liệu khác trong MongoDB?

Tài liệu MongoDB được nhúng hoặc lồng nhau là một tài liệu bình thường được lồng bên trong một tài liệu khác trong bộ sưu tập MongoDB. Tài liệu được nhúng đặc biệt hữu ích khi tồn tại mối quan hệ một-nhiều giữa các tài liệu .

Chúng tôi có thể tham gia hai tài liệu trong MongoDB không?

Chúng ta có thể nối các tài liệu trên các bộ sưu tập trong MongoDB bằng cách sử dụng chức năng $lookup (Tổng hợp) . $lookup(Aggregation) tạo liên kết ngoài cùng bên trái với một tập hợp khác và giúp lọc dữ liệu khỏi dữ liệu đã hợp nhất.

Giới hạn của một tài liệu trong MongoDB là gì?

Kích thước tối đa mà một tài liệu riêng lẻ có thể có trong MongoDB là 16 MB với độ sâu lồng nhau là 100 cấp độ . Biên tập. Không có kích thước tối đa cho một cơ sở dữ liệu MongoDB riêng lẻ.

Làm cách nào để lưu trữ các tài liệu lồng nhau trong MongoDB?

Trong MongoDB, bạn có thể truy cập vào các trường tài liệu được lồng/nhúng của bộ sưu tập bằng cách sử dụng ký hiệu dấu chấm và khi bạn đang sử dụng ký hiệu dấu chấm, .