MongoDB để chèn vòng lặp
điểm. 1 Show
câu trả lời được chấp nhận thì đấy
Giải thích
Tất nhiên, bạn có thể sửa đổi và tạo các lô lớn hơn với nhiều mục nhập bên trong insertMany đây là tùy chọn insertMany
Thêm câu hỏi với thẻ tương tựMáy tính xách tay làm việc của tôi sẽ không cho phép tôi cài đặt jq. Tôi đã tìm ra cách chèn tài liệu vào một bộ sưu tập khác bằng cách sử dụng bàn tay dài bên dưới
bây giờ tôi phải tìm cách thêm số đếm vào tập lệnh Đối với tài liệu trình bao kế thừa 5, hãy tham khảo tài liệu cho bản phát hành Máy chủ MongoDB tương ứng
Chèn nhiều tài liệu vào một bộ sưu tập Phương thức này có cú pháp như sau
Tham số Loại Sự miêu tả
tài liệu Một mảng tài liệu để chèn vào bộ sưu tập
tài liệu Không bắt buộc. Một tài liệu bày tỏ mối quan tâm viết. Bỏ qua để sử dụng mối quan tâm ghi mặc định Không đặt rõ ràng mối quan tâm ghi cho hoạt động nếu chạy trong một giao dịch. Để sử dụng ghi mối quan tâm với các giao dịch, hãy xem
boolean Không bắt buộc. Một boolean chỉ định xem phiên bản sẽ thực hiện thao tác chèn có thứ tự hay không có thứ tự. Mặc định là
Hành vi cư xửĐưa ra một mảng tài liệu, chèn từng tài liệu trong mảng vào bộ sưu tập Thực hiện các hoạt độngTheo mặc định, tài liệu được chèn theo thứ tự Nếu 9 được đặt thành false, tài liệu được chèn vào ở định dạng không có thứ tự và có thể được sắp xếp lại để tăng hiệu suất. Các ứng dụng không nên phụ thuộc vào thứ tự của phần chèn nếu sử dụng không có thứ tựSố lượng thao tác trong mỗi nhóm không được vượt quá giá trị của cơ sở dữ liệu. Kể từ MongoDB 3. 6, giá trị này là 1. Giá trị này được hiển thị trong trườngGiới hạn này ngăn các sự cố với thông báo lỗi quá khổ. Nếu một nhóm vượt quá mức này, trình điều khiển máy khách sẽ chia nhóm thành các nhóm nhỏ hơn với số lượng nhỏ hơn hoặc bằng giá trị của giới hạn. Ví dụ: với giá trị 3 của 1, nếu hàng đợi bao gồm 5 thao tác, trình điều khiển sẽ tạo 2 nhóm, mỗi nhóm có 1 thao tácGhi chúNgười lái xe chỉ chia nhóm thành các nhóm nhỏ hơn khi sử dụng API cấp cao. Nếu sử dụng db. runCommand() trực tiếp (ví dụ: khi viết trình điều khiển), MongoDB sẽ đưa ra lỗi khi cố thực thi một đợt ghi vượt quá giới hạn Bắt đầu từ MongoDB 3. 6, khi báo cáo lỗi cho một đợt phát triển quá lớn, MongoDB sẽ cắt bớt tất cả các thông báo lỗi còn lại thành chuỗi trống. Hiện tại, bắt đầu khi có ít nhất 2 thông báo lỗi với tổng kích thước lớn hơn 7Kích thước và cơ chế nhóm là chi tiết hiệu suất bên trong và có thể thay đổi trong các phiên bản sau Việc thực thi một danh sách các thao tác trên một bộ sưu tập được phân mảnh thường sẽ chậm hơn so với thực thi một danh sách vì với một danh sách có thứ tự, mỗi thao tác phải đợi thao tác trước đó kết thúc Tạo bộ sưu tậpNếu bộ sưu tập không tồn tại, thì hãy tạo bộ sưu tập khi ghi thành công { "acknowledged" : true, "insertedIds" : [ ObjectId("562a94d381cb9f1cd6eb0e1a"), ObjectId("562a94d381cb9f1cd6eb0e1b"), ObjectId("562a94d381cb9f1cd6eb0e1c") ]}6 Lĩnh vựcNếu tài liệu không chỉ định một trường, sau đó thêm trường 6 và gán một trường duy nhất cho tài liệu. Hầu hết các trình điều khiển tạo một ObjectId và chèn trường 6, nhưng trình điều khiển sẽ tạo và điền vào trường 6 nếu trình điều khiển hoặc ứng dụng khôngNếu tài liệu chứa trường 6, thì giá trị 6 phải là duy nhất trong bộ sưu tập để tránh lỗi khóa trùng lặpkhả năng giải thíchkhông tương thích với Xử lý lỗiChèn ném một ngoại lệ 2Loại trừ các lỗi Ghi liên quan, các hoạt động được sắp xếp sẽ dừng sau một lỗi, trong khi các hoạt động không được sắp xếp tiếp tục xử lý mọi hoạt động ghi còn lại trong hàng đợi Lỗi ghi lo ngại được hiển thị trong trường 3, trong khi tất cả các lỗi khác được hiển thị trong trường 4. Nếu gặp lỗi, số lượng thao tác ghi thành công sẽ được hiển thị thay vì danh sách các _id được chèn. Các thao tác có thứ tự hiển thị một lỗi gặp phải trong khi các thao tác không có thứ tự hiển thị từng lỗi trong một mảnggiao dịchcó thể được sử dụng bên trong các giao dịch nhiều tài liệu Quan trọngTrong hầu hết các trường hợp, giao dịch nhiều tài liệu phát sinh chi phí hiệu suất cao hơn so với ghi một tài liệu và tính khả dụng của các giao dịch nhiều tài liệu không phải là sự thay thế cho thiết kế lược đồ hiệu quả. Đối với nhiều trường hợp, sẽ tiếp tục tối ưu cho dữ liệu và trường hợp sử dụng của bạn. Nghĩa là, trong nhiều tình huống, việc lập mô hình dữ liệu của bạn một cách thích hợp sẽ giảm thiểu nhu cầu giao dịch nhiều tài liệu Để biết các cân nhắc sử dụng giao dịch bổ sung (chẳng hạn như giới hạn thời gian chạy và giới hạn kích thước oplog), hãy xem thêm Cân nhắc sản xuất Tạo bộ sưu tập trong giao dịchBắt đầu từ MongoDB 4. 4, bạn có thể tạo các bộ sưu tập và chỉ mục bên trong a nếu giao dịch là không phải là một giao dịch ghi chéoCụ thể, trong MongoDB 4. 4 trở lên, nếu bạn chỉ định phần phụ trang trên bộ sưu tập không tồn tại trong giao dịch, bộ sưu tập sẽ được tạo hoàn toàn Trong MongoDB 4. 4 trở về trước, thao tác phải được chạy trên bộ sưu tập hiện có MẹoXem thêmViết mối quan tâm và giao dịchKhông đặt rõ ràng mối quan tâm ghi cho hoạt động nếu chạy trong một giao dịch. Để sử dụng ghi mối quan tâm với các giao dịch, hãy xem ví dụCác ví dụ sau chèn tài liệu vào bộ sưu tập 6Chèn một số tài liệu mà không chỉ định trường { "acknowledged" : true, "insertedIds" : [ ObjectId("562a94d381cb9f1cd6eb0e1a"), ObjectId("562a94d381cb9f1cd6eb0e1b"), ObjectId("562a94d381cb9f1cd6eb0e1c") ]}6Ví dụ sau sử dụng để chèn tài liệu không chứa trường 6
Hoạt động trả về tài liệu sau ________số 8_______ Bởi vì các tài liệu không bao gồm 6, hãy tạo và thêm trường 6 cho mỗi tài liệu và gán cho nó một giá trị duy nhấtCác giá trị 4 dành riêng cho máy và thời gian khi vận hành được chạy. Như vậy, các giá trị của bạn có thể khác với các giá trị trong ví dụChèn một số tài liệu chỉ định một trường { "acknowledged" : true, "insertedIds" : [ ObjectId("562a94d381cb9f1cd6eb0e1a"), ObjectId("562a94d381cb9f1cd6eb0e1b"), ObjectId("562a94d381cb9f1cd6eb0e1c") ]}6Ví dụ/thao tác sau đây sử dụng để chèn tài liệu bao gồm trường 6. Giá trị của 6 phải là duy nhất trong bộ sưu tập để tránh lỗi khóa trùng lặp
Hoạt động trả về tài liệu sau
Chèn một giá trị trùng lặp cho bất kỳ khóa nào là một phần của a , chẳng hạn như 6, sẽ tạo ra một ngoại lệ. Những nỗ lực sau đây để chèn một tài liệu có giá trị 6 đã tồn tại
Vì 1 đã tồn tại, ngoại lệ sau được đưa ra
Lưu ý rằng một tài liệu đã được chèn. Tài liệu đầu tiên của 1 sẽ chèn thành công nhưng lần chèn thứ hai sẽ không thành công. Điều này cũng sẽ ngăn các tài liệu bổ sung còn lại trong hàng đợi được chèn vàoVới 9 đến 4, thao tác chèn sẽ tiếp tục với mọi tài liệu còn lạiChèn không có thứ tựNhững nỗ lực sau đây để chèn nhiều tài liệu với trường 6 và 6. Mảng tài liệu chứa hai tài liệu có trường 6 trùng lặp
Các hoạt động ném ngoại lệ sau
Mặc dù không thể chèn tài liệu có 8 và 9 do các giá trị 6 trùng lặp, nhưng 1 cho biết 5 tài liệu còn lại đã được chènSử dụng ghi mối quan tâmĐưa ra một bộ bản sao gồm ba thành viên, thao tác sau đây chỉ định một 2 của 3 và 4 của 5
Nếu chính và ít nhất một phụ xác nhận mỗi thao tác ghi trong vòng 100 mili giây, nó sẽ trả về 0Nếu tổng thời gian cần thiết cho tất cả các nút bắt buộc trong bộ bản sao để xác nhận thao tác ghi lớn hơn 4, thì 7 sau đây sẽ được hiển thị khi khoảng thời gian 4 đã trôi qua
Chúng ta có thể sử dụng vòng lặp for trong MongoDB không?Việc sử dụng vòng lặp forEach trong mongoDB rất đơn giản, nếu bạn biết javascript . Bằng cách sử dụng vòng lặp forEach, bạn có thể thao tác tài liệu trên bộ sưu tập của mình ở mọi cấp độ và ở mọi kích thước dữ liệu. bạn có thể chạy mã javascript ở cả phía máy khách của MongoDB và phía máy chủ của MongoDB.
Làm cách nào để chèn nhiều mục trong MongoDB?Trình vỏ MongoDB cung cấp các phương thức sau để chèn tài liệu vào bộ sưu tập. . Để chèn một tài liệu, hãy sử dụng db. thu thập. chènMột () Để chèn nhiều tài liệu, hãy sử dụng db. thu thập. chènMany() Làm cách nào để chèn dữ liệu vào MongoDB?Để chèn dữ liệu vào bộ sưu tập MongoDB, bạn cần sử dụng phương thức insert() hoặc save() của MongoDB .
Chức năng của insertMany() trong MongoDB là gì?Phương thức insertMany() chèn một hoặc nhiều tài liệu vào bộ sưu tập . Phải mất một mảng tài liệu để chèn vào bộ sưu tập. Theo mặc định, tài liệu được chèn theo thứ tự nhất định nếu bạn muốn chèn tài liệu không theo thứ tự, sau đó đặt giá trị củaordered thành false. |