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

Khi sử dụng MongoDB, bạn sẽ dành phần lớn thời gian để quản lý tài liệu 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 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ôi trường tập trung vào tài liệu

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 lược đồ bắt buộc theo mặc định, nên các tài liệu trong một bộ sưu tập có thể chứa một 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 [_______05] 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à một 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

WriteResult[{ "nInserted" : 1 }]

0

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

WriteResult[{ "nInserted" : 1 }]

4

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"]

}

]

]

WriteResult[{ "nInserted" : 1 }]

8

Vì chúng tôi đã thực hiện thao tác ghi hàng loạt, 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 đó

Mặc dù 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 linh hoạt nhưng nó không được dùng trong nhiều trình điều khiển MongoDB để thay thế cho hai phương thức sau

Sử dụng phương pháp

WriteResult[{ "nInserted" : 1 }]

81

Phương pháp

WriteResult[{ "nInserted" : 1 }]

81 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

{

_id: 80380,

vehicle_type: "car",

mileage: 7377.80,

color: "blue",

markets: [

"US",

"UK"

],

options: {

transmission: "automatic",

num_doors: 4,

power_windows: true

}

}

6

{

_id: 80380,

vehicle_type: "car",

mileage: 7377.80,

color: "blue",

markets: [

"US",

"UK"

],

options: {

transmission: "automatic",

num_doors: 4,

power_windows: true

}

}

7

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

WriteResult[{ "nInserted" : 1 }]

81 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

WriteResult[{ "nInserted" : 1 }]

87

Để 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

WriteResult[{ "nInserted" : 1 }]

87 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,

WriteResult[{ "nInserted" : 1 }]

87 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

WriteResult[{ "nInserted" : 1 }]

4

WriteResult[{ "nInserted" : 1 }]

5

Như với

WriteResult[{ "nInserted" : 1 }]

81,

WriteResult[{ "nInserted" : 1 }]

87 trả về một tài liệu thừa 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

{

_id: 80380,

vehicle_type: "car",

mileage: 7377.80,

color: "blue",

markets: [

"US",

"UK"

],

options: {

transmission: "automatic",

num_doors: 4,

power_windows: true

}

}

63 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

{

_id: 80380,

vehicle_type: "car",

mileage: 7377.80,

color: "blue",

markets: [

"US",

"UK"

],

options: {

transmission: "automatic",

num_doors: 4,

power_windows: true

}

}

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

WriteResult[{ "nInserted" : 1 }]

00

WriteResult[{ "nInserted" : 1 }]

01

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

{

_id: 80380,

vehicle_type: "car",

mileage: 7377.80,

color: "blue",

markets: [

"US",

"UK"

],

options: {

transmission: "automatic",

num_doors: 4,

power_windows: true

}

}

66 sau

{

_id: 80380,

vehicle_type: "car",

mileage: 7377.80,

color: "blue",

markets: [

"US",

"UK"

],

options: {

transmission: "automatic",

num_doors: 4,

power_windows: true

}

}

63

WriteResult[{ "nInserted" : 1 }]

02

WriteResult[{ "nInserted" : 1 }]

03

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

WriteResult[{ "nInserted" : 1 }]

04

WriteResult[{ "nInserted" : 1 }]

05

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ó

  • {

    _id: 80380,

    vehicle_type: "car",

    mileage: 7377.80,

    color: "blue",

    markets: [

    "US",

    "UK"

    ],

    options: {

    transmission: "automatic",

    num_doors: 4,

    power_windows: true

    }

    }

    70. 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
  • {

    _id: 80380,

    vehicle_type: "car",

    mileage: 7377.80,

    color: "blue",

    markets: [

    "US",

    "UK"

    ],

    options: {

    transmission: "automatic",

    num_doors: 4,

    power_windows: true

    }

    }

    71. 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
  • {

    _id: 80380,

    vehicle_type: "car",

    mileage: 7377.80,

    color: "blue",

    markets: [

    "US",

    "UK"

    ],

    options: {

    transmission: "automatic",

    num_doors: 4,

    power_windows: true

    }

    }

    72. 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

  • {

    _id: 80380,

    vehicle_type: "car",

    mileage: 7377.80,

    color: "blue",

    markets: [

    "US",

    "UK"

    ],

    options: {

    transmission: "automatic",

    num_doors: 4,

    power_windows: true

    }

    }

    73. Đặ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.

      {

      _id: 80380,

      vehicle_type: "car",

      mileage: 7377.80,

      color: "blue",

      markets: [

      "US",

      "UK"

      ],

      options: {

      transmission: "automatic",

      num_doors: 4,

      power_windows: true

      }

      }

      74
  • {

    _id: 80380,

    vehicle_type: "car",

    mileage: 7377.80,

    color: "blue",

    markets: [

    "US",

    "UK"

    ],

    options: {

    transmission: "automatic",

    num_doors: 4,

    power_windows: true

    }

    }

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

      {

      _id: 80380,

      vehicle_type: "car",

      mileage: 7377.80,

      color: "blue",

      markets: [

      "US",

      "UK"

      ],

      options: {

      transmission: "automatic",

      num_doors: 4,

      power_windows: true

      }

      }

      76
  • {

    _id: 80380,

    vehicle_type: "car",

    mileage: 7377.80,

    color: "blue",

    markets: [

    "US",

    "UK"

    ],

    options: {

    transmission: "automatic",

    num_doors: 4,

    power_windows: true

    }

    }

    77. 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.

      {

      _id: 80380,

      vehicle_type: "car",

      mileage: 7377.80,

      color: "blue",

      markets: [

      "US",

      "UK"

      ],

      options: {

      transmission: "automatic",

      num_doors: 4,

      power_windows: true

      }

      }

      78
  • {

    _id: 80380,

    vehicle_type: "car",

    mileage: 7377.80,

    color: "blue",

    markets: [

    "US",

    "UK"

    ],

    options: {

    transmission: "automatic",

    num_doors: 4,

    power_windows: true

    }

    }

    79. 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.

      WriteResult[{ "nInserted" : 1 }]

      40
  • WriteResult[{ "nInserted" : 1 }]

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

      WriteResult[{ "nInserted" : 1 }]

      42
  • WriteResult[{ "nInserted" : 1 }]

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

      WriteResult[{ "nInserted" : 1 }]

      44
  • WriteResult[{ "nInserted" : 1 }]

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

      WriteResult[{ "nInserted" : 1 }]

      46
  • WriteResult[{ "nInserted" : 1 }]

    47. 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.

      WriteResult[{ "nInserted" : 1 }]

      48
  • WriteResult[{ "nInserted" : 1 }]

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

      WriteResult[{ "nInserted" : 1 }]

      50
  • WriteResult[{ "nInserted" : 1 }]

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

      WriteResult[{ "nInserted" : 1 }]

      52
  • WriteResult[{ "nInserted" : 1 }]

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

      WriteResult[{ "nInserted" : 1 }]

      54
  • WriteResult[{ "nInserted" : 1 }]

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

      WriteResult[{ "nInserted" : 1 }]

      56
  • WriteResult[{ "nInserted" : 1 }]

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

      WriteResult[{ "nInserted" : 1 }]

      58
  • WriteResult[{ "nInserted" : 1 }]

    59. 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.

      WriteResult[{ "nInserted" : 1 }]

      000
  • WriteResult[{ "nInserted" : 1 }]

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

      WriteResult[{ "nInserted" : 1 }]

      002
  • WriteResult[{ "nInserted" : 1 }]

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

      WriteResult[{ "nInserted" : 1 }]

      004
  • WriteResult[{ "nInserted" : 1 }]

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

    WriteResult[{ "nInserted" : 1 }]

    55 và

    WriteResult[{ "nInserted" : 1 }]

    001 để 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.

      WriteResult[{ "nInserted" : 1 }]

      008
  • WriteResult[{ "nInserted" : 1 }]

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

    WriteResult[{ "nInserted" : 1 }]

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

    WriteResult[{ "nInserted" : 1 }]

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

      WriteResult[{ "nInserted" : 1 }]

      012
  • WriteResult[{ "nInserted" : 1 }]

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

    WriteResult[{ "nInserted" : 1 }]

    005 và

    WriteResult[{ "nInserted" : 1 }]

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

      WriteResult[{ "nInserted" : 1 }]

      016
  • WriteResult[{ "nInserted" : 1 }]

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

    WriteResult[{ "nInserted" : 1 }]

    005 và

    WriteResult[{ "nInserted" : 1 }]

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

      WriteResult[{ "nInserted" : 1 }]

      020

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

{

_id: 80380,

vehicle_type: "car",

mileage: 7377.80,

color: "blue",

markets: [

"US",

"UK"

],

options: {

transmission: "automatic",

num_doors: 4,

power_windows: true

}

}

70 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 pháp

{

_id: 80380,

vehicle_type: "car",

mileage: 7377.80,

color: "blue",

markets: [

"US",

"UK"

],

options: {

transmission: "automatic",

num_doors: 4,

power_windows: true

}

}

70 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à

  • WriteResult[{ "nInserted" : 1 }]

    023. 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
  • WriteResult[{ "nInserted" : 1 }]

    024. 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

WriteResult[{ "nInserted" : 1 }]

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

WriteResult[{ "nInserted" : 1 }]

06

WriteResult[{ "nInserted" : 1 }]

07

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

Phương thức

{

_id: 80380,

vehicle_type: "car",

mileage: 7377.80,

color: "blue",

markets: [

"US",

"UK"

],

options: {

transmission: "automatic",

num_doors: 4,

power_windows: true

}

}

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

{

_id: 80380,

vehicle_type: "car",

mileage: 7377.80,

color: "blue",

markets: [

"US",

"UK"

],

options: {

transmission: "automatic",

num_doors: 4,

power_windows: true

}

}

70, 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

{

_id: 80380,

vehicle_type: "car",

mileage: 7377.80,

color: "blue",

markets: [

"US",

"UK"

],

options: {

transmission: "automatic",

num_doors: 4,

power_windows: true

}

}

71 hoàn toàn tuân theo cú pháp

{

_id: 80380,

vehicle_type: "car",

mileage: 7377.80,

color: "blue",

markets: [

"US",

"UK"

],

options: {

transmission: "automatic",

num_doors: 4,

power_windows: true

}

}

70, 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

WriteResult[{ "nInserted" : 1 }]

031 trong tài liệu bộ sưu tập

WriteResult[{ "nInserted" : 1 }]

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

WriteResult[{ "nInserted" : 1 }]

08

WriteResult[{ "nInserted" : 1 }]

09

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"

WriteResult[{ "nInserted" : 1 }]

40

WriteResult[{ "nInserted" : 1 }]

41

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

Phương pháp

{

_id: 80380,

vehicle_type: "car",

mileage: 7377.80,

color: "blue",

markets: [

"US",

"UK"

],

options: {

transmission: "automatic",

num_doors: 4,

power_windows: true

}

}

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

{

_id: 80380,

vehicle_type: "car",

mileage: 7377.80,

color: "blue",

markets: [

"US",

"UK"

],

options: {

transmission: "automatic",

num_doors: 4,

power_windows: true

}

}

70, 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

WriteResult[{ "nInserted" : 1 }]

42

WriteResult[{ "nInserted" : 1 }]

07

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ó

WriteResult[{ "nInserted" : 1 }]

40

WriteResult[{ "nInserted" : 1 }]

45

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 phương pháp

WriteResult[{ "nInserted" : 1 }]

035 hoặc

WriteResult[{ "nInserted" : 1 }]

036. 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

WriteResult[{ "nInserted" : 1 }]

035 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

WriteResult[{ "nInserted" : 1 }]

036 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

WriteResult[{ "nInserted" : 1 }]

46____147

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

WriteResult[{ "nInserted" : 1 }]

036 để thay thế

WriteResult[{ "nInserted" : 1 }]

48

WriteResult[{ "nInserted" : 1 }]

49

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

WriteResult[{ "nInserted" : 1 }]

00

WriteResult[{ "nInserted" : 1 }]

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 đó

WriteResult[{ "nInserted" : 1 }]

041—đượ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

WriteResult[{ "nInserted" : 1 }]

042

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 GridFS API

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

WriteResult[{ "nInserted" : 1 }]

035 hoặc

WriteResult[{ "nInserted" : 1 }]

036. 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ó

WriteResult[{ "nInserted" : 1 }]

7 cụ thể

WriteResult[{ "nInserted" : 1 }]

46

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ự

WriteResult[{ "nInserted" : 1 }]

48

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ố phương pháp cập nhật liên quan

Cụ thể, để nối thêm dữ liệu mới vào tài liệu, bạn có thể sử dụng toán tử cập nhật

WriteResult[{ "nInserted" : 1 }]

55. 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

Làm cách nào để chèn mảng tài liệu trong MongoDB?

Tài liệu trong MongoDB là một cấu trúc dữ liệu với các đối tượng giống như JSON có các cặp trường và giá trị. Để chèn tài liệu vào bộ sưu tập MongoDB, chúng ta có thể sử dụng các phương thức khác nhau như insert[], insertOne[] và insertMany[] .

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 .

Làm cách nào để chèn bản ghi trong MongoDB?

insert[] Trong MongoDB, phương thức insert[] chèn một hoặc nhiều tài liệu vào bộ sưu tập . Nó nhận hai tham số, tham số đầu tiên là tài liệu hoặc mảng của tài liệu mà chúng ta muốn chèn và các tham số còn lại là tùy chọn. Sử dụng phương pháp này, bạn cũng có thể tạo một bộ sưu tập bằng cách chèn tài liệu.

Làm cách nào để cập nhật mảng đối tượng lồng nhau trong MongoDB?

Cập nhật mảng đối tượng lồng nhau .
db. thu thập. .
Toán tử $set thay thế giá trị của một trường bằng giá trị đã chỉ định
The filtered positional operator $[] identifies the array elements that match the arrayFilters conditions for an update operation..

Chủ Đề