Chèn mongodb nếu không tồn tại
Bạn có thể có chức năng mong muốn bằng cách khớp với các thuộc tính tài liệu đầy đủ, ngoại trừ thuộc tính bạn muốn cập nhật. Ví dụ bên dưới Show
Chèn tài liệu duy nhất vào bộ sưu tập
Hiện nay
lợi nhuận
Tuyên bố cập nhật
cập nhật thuộc tính 'tuổi' của tài liệu hiện có
Nếu bạn chạy chính xác câu lệnh cập nhật thay đổi tên (do đó, truy vấn tìm sẽ không tìm thấy tài liệu hiện có)
Tài liệu "Robot Connor" sẽ được tạo với tuổi 33 và bạn sẽ có hai tài liệu trong bộ sưu tập của mình
Ghi chú. Tôi không tin rằng các thuộc tính bổ sung trên tham số truy vấn cập nhật có tác động đến hiệu suất Có tổng cộng 100 (100 id khác nhau). Tôi đã thêm chúng vào cơ sở dữ liệu mongodb của mình bằng cầy mangut nhưng vấn đề là nó luôn thêm (tôi đã có 5000 người dùng (50 lần lặp lại 100 người dùng) Tôi muốn thêm nếu 04 không tồn tại hoặc cập nhật nếu nó tồn tạiTôi đang làm gì sai? - stackoverflow. comghi bàn. 0 Nhìn vào tài liệu mongodb, có vẻ như ________ 106 không phải là thứ bạn muốn sử dụng ở đây. Bạn có thể muốn sử dụng 07 vì nó hỗ trợ 08 trong khi 06 thì khôngBạn sẽ có thể sử dụng một cái gì đó như thế này ________số 8Điều này đang sử dụng một bộ lọc trống, vì vậy sẽ chèn nếu mục không tồn tại hoặc cập nhật nếu có ghi bàn. 0
Phương thức updateMany() nhận các tham số sau Bộ lọc
Cập nhật
Upsert Tạo một tài liệu mới nếu không có tài liệu nào phù hợp với bộ lọc. Để biết thêm chi tiết, xem hành vi upsert. Cập nhật tài liệu phù hợp với bộ lọc. Để tránh nhiều uperts, hãy đảm bảo rằng các trường bộ lọc được lập chỉ mục duy nhất Trong bài viết này, việc chèn bản ghi vào bộ sưu tập MongoDB được thảo luận ngắn gọn. Các cách khác nhau để chèn các bản ghi này cũng được giải thích Ngoài ra, 10 và 11 được đề cập ngắn gọndb.collection.find({"name" : "John", "surname" : "Connor", "role" : "commander", "character" : "cautious", "hobby" : "kill terminators" }) 10 trong MongoDB 10 là một tùy chọn MongoDB được sử dụng cho các hoạt động cập nhật như 02, 03, v.v. Hay nói cách khác, 04 là kết quả của việc kết hợp giữa cập nhật và chèn (cập nhật + chèn = 04)Nếu giá trị của tùy chọn là 06 và tài liệu hoặc các tài liệu khớp với truy vấn đã chỉ định được xác định, hành động cập nhật sẽ cập nhật tài liệu hoặc các tài liệu phù hợp. Ngoài ra, giả sử giá trị của tùy chọn này là 06 và không có tài liệu hoặc tài liệu nào khớp với tài liệu được cung cấpTrong trường hợp đó, tùy chọn này sẽ tạo một tài liệu mới trong bộ sưu tập với các trường được chỉ định trong hoạt động. Giá trị tùy chọn hoạt động của 04 là 09 theo mặc địnhNếu giá trị 04 trong bộ sưu tập được chia sẻ là 06, thì bạn phải đưa toàn bộ khóa được chia sẻ vào bộ lọccú pháp Giá trị tùy chọn 04 là 06 hoặc 09Bây giờ bạn sẽ học cách sử dụng tùy chọn 04db.collection.find({"name" : "John", "surname" : "Connor", "role" : "commander", "character" : "cautious", "hobby" : "kill terminators" }) 10 Với phương thức db.collection.find({"name" : "John", "surname" : "Connor", "role" : "commander", "character" : "cautious", "hobby" : "kill terminators" }) 03 trong MongoDBVới chức năng 03, bạn có thể sử dụng tùy chọn 04. Giá trị mặc định của tùy chọn này trong phương pháp này là ________ 109Nếu bạn đặt giá trị của tùy chọn này thành 06, quy trình sẽ tiến hành một trong các thao tác sau
cú pháp 1Bằng cách điều chỉnh giá trị của tùy chọn 04 thành 06, bây giờ bạn sẽ chèn một tài liệu mới vào bộ sưu tập 46 0Ở đây, giá trị của tùy chọn 04 được đặt thành 06; Với chức năng 02, bạn có thể sử dụng tùy chọn 04. Giá trị mặc định của tham số này trong chức năng này là 09Nếu bạn đặt giá trị của tùy chọn này thành 06, quy trình sẽ thực hiện một trong các thao tác sau
Tạo một chỉ mục duy nhất trên trường tên để ngăn MongoDB thêm cùng một tài liệu nhiều lần. Ví dụ: nếu nhiều tài liệu yêu cầu cùng một bản cập nhật với 99, thì chỉ một hành động 90 sẽ chèn thành công tài liệu mới có chỉ mục duy nhấtcú pháp 0Bằng cách thay đổi giá trị của tùy chọn 04 thành 06, bạn sẽ chèn một tài liệu mới vào bộ sưu tập 46 4Vì giá trị cho tùy chọn 04 được đặt thành 06, nên hàm 02 sẽ chèn một tài liệu mới có hai trường ( 97 và 98) vì không có tài liệu nào khớp với tên 99db.collection.find({"name" : "John", "surname" : "Connor", "role" : "commander", "character" : "cautious", "hobby" : "kill terminators" }) 10 Với các biểu thức toán tử trong MongoDBGiả sử không có tài liệu nào từ bộ sưu tập nhất định khớp với bộ lọc. Trong trường hợp đó, tham số 90 là một tài liệu có toán tử 90Giá trị của tùy chọn 04 là 06; Hoặc, nói cách khác, khi tùy chọn 04 là 06 và không có tài liệu nào phù hợp với bộ lọc được cung cấp, thao tác 90 sẽ tạo một tài liệu mới trong bộ sưu tập đã cho, với các trường được chỉ định trong tài liệu 66 và 90Ví dụ Bằng cách thay đổi giá trị của tùy chọn 04 thành 06, bạn sẽ đưa một tài liệu mới vào bộ sưu tập 55 9Hàm 02 tạo một tài liệu mới với trường điều kiện truy vấn 57 và áp dụng các hành động 58 và 59db.collection.find({"name" : "John", "surname" : "Connor", "role" : "commander", "character" : "cautious", "hobby" : "kill terminators" }) 10 Với tài liệu thay thế trong MongoDBGiả sử không có tài liệu nào từ bộ sưu tập được cung cấp đáp ứng bộ lọc và tham số 90 bao gồm tài liệu thay thế và giá trị của tài liệu 04 được đặt thành 06. Hành động 90 chèn một tài liệu mới vào bộ sưu tập, với các trường được chỉ định trong tài liệu thay thếMongoDB không tạo trường 105 duy nhất cho tài liệu mới nếu tài liệu thay thế bao gồm trường 105. Ngoài ra, nếu tài liệu thay thế thiếu trường 105, MongoDB sẽ tạo trường 105 mới cho tài liệu mớiLưu ý rằng các giá trị trường 105 riêng biệt trong tham số truy vấn và tài liệu thay thế không được phép. Nếu bạn làm như vậy, bạn sẽ gặp phải vấn đềVí dụ Bằng cách điều chỉnh giá trị của tùy chọn 04 thành 06, bây giờ bạn sẽ chèn một tài liệu mới vào bộ sưu tập 55 9db.collection.find({"name" : "John", "surname" : "Connor", "role" : "commander", "character" : "cautious", "hobby" : "kill terminators" }) 10 Với Aggregation Pipeline trong MongoDBQuy trình tổng hợp là quy trình nhiều giai đoạn, trong đó các tài liệu được chấp nhận làm đầu vào và được tạo dưới dạng tập hợp các tài liệu kết quả Các tài liệu kết quả sau đó được lấy làm đầu vào và được tạo ở bước tiếp theo (nếu có) cho đến giai đoạn cuối cùng. Số lượng giai đoạn trong quy trình có thể nằm trong khoảng từ 114 đến 115Giả sử không có tài liệu nào phù hợp với bộ lọc đã chỉ định và tham số 90 bao gồm một đường dẫn tổng hợp và giá trị của tùy chọn 04 được đặt thành 06. Trong trường hợp đó, hoạt động 90 sẽ chèn một tài liệu mới vào bộ sưu tậpTài liệu mới này được hình thành bằng cách sử dụng mệnh đề bình đẳng trong tham số 66, sau đó đường dẫn được áp dụng cho nó để tạo tài liệu cần chènVí dụ Bằng cách điều chỉnh giá trị của tùy chọn 04 thành 06, bây giờ bạn sẽ chèn một tài liệu mới vào bộ sưu tập 46 6db.collection.find({"name" : "John", "surname" : "Connor", "role" : "commander", "character" : "cautious", "hobby" : "kill terminators" }) 10 Với truy vấn db.collection.find({"name" : "John", "surname" : "Connor", "role" : "commander", "character" : "cautious", "hobby" : "kill terminators" }) 105 có dấu chấm trong MongoDBBạn đã thấy cách hàm 02 có thể thay đổi dữ liệu trong bộ sưu tập tùy thuộc vào truy vấn và cách tùy chọn 04 có thể thêm trường mới nếu không tìm thấy tài liệu phù hợpTuy nhiên, 04 với truy vấn 105 có dấu chấm là một ngoại lệ và việc cố gắng chèn tài liệu theo cách này sẽ dẫn đến lỗi từ MongoDBHình minh họa Hãy xem thao tác cập nhật sau. Bản cập nhật sẽ không thành công trong khi tạo tài liệu để chèn do thao tác 90 chỉ định 99 và truy vấn cung cấp các điều kiện trên trường 105 bằng cách sử dụng ký hiệu dấu chấm 5Vì vậy, bài viết này đã thảo luận về vấn đề chèn bản ghi vào các trường trống trong MongoDB. 10 được giải thích ngắn gọn với các kịch bản khác nhau
Làm cách nào để chèn giá trị 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 để chèn id trong MongoDB?Nếu tài liệu không chỉ định trường _id, thì MongoDB sẽ thêm trường _id và gán một ObjectId() duy nhất cho tài liệu trước khi chèn. Most drivers create an ObjectId and insert the _id field, but the mongod will create and populate the _id if the driver or application does not.
Sự khác biệt giữa cập nhật và Upsert trong MongoDB là gì?Hay nói cách khác, upsert là sự kết hợp giữa cập nhật và chèn (cập nhật + chèn = upsert). Nếu giá trị của tùy chọn này được đặt thành true và tài liệu hoặc các tài liệu được tìm thấy khớp với truy vấn đã chỉ định, thì thao tác cập nhật sẽ cập nhật tài liệu hoặc các tài liệu phù hợp.
Làm cách nào để sử dụng $set trong MongoDB?Toán tử $set thay thế giá trị của một trường bằng giá trị đã chỉ định . Biểu thức toán tử $set có dạng như sau. { $set. { |