Review Chúng ta có thể sử dụng $push và $set cùng nhau trong mongodb không?
Kinh Nghiệm Hướng dẫn Chúng ta hoàn toàn có thể sử dụng $push và $set cùng nhau trong mongodb không? Mới Nhất
Hoàng Thị Thanh Mai đang tìm kiếm từ khóa Chúng ta hoàn toàn có thể sử dụng $push và $set cùng nhau trong mongodb không? được Cập Nhật vào lúc : 2022-12-17 03:32:05 . Với phương châm chia sẻ Thủ Thuật về trong nội dung bài viết một cách Chi Tiết 2022. Nếu sau khi tham khảo tài liệu vẫn ko hiểu thì hoàn toàn có thể lại Comments ở cuối bài để Admin lý giải và hướng dẫn lại nha.Chào mọi người,
Mới sử dụng mongoDB và hiện giờ đang nghiên cứu và phân tích những kĩ năng. Tôi đã
xem qua tài liệu, lịch sử forum, google, v.v. và không thể tìm thấy
điều gì rõ ràng nhưng tôi không thể tin rằng mình là người đầu tiên hỏi
thắc mắc này.
- Bộ sưu tập mẫu "sinh viên"Ví dụ về toán tử MongoDB $pushToán tử đẩy và kéo là gì?Cú pháp cơ bản của toán tử $pushCú pháp cơ bản của toán tử $pullCách hoạt động và sinh hoạt giải trí của toán tử MongoDB $pushcông cụ sửa đổi toán tử $pushNối một giá trị duy nhất vào một mảngNối nhiều giá trị vào một mảngSử dụng Công cụ sửa đổi $sort và $sliceSử dụng công cụ sửa đổi vị trí $Cách hoạt động và sinh hoạt giải trí của toán tử MongoDB $pullLoại bỏ một mục duy nhất khỏi một mảngXóa tất cả những mục bằng một giá trị được chỉ địnhXóa những mục phù phù phù hợp với Điều kiện $pull đã chỉ địnhXóa những mục khỏi một mảng tài liệuLàm cách nào để sử dụng $push trong MongoDB?Việc sử dụng $set trong MongoDB là gì?Đâu là sự việc khác lạ giữa $push và $addToSet?$all trong MongoDB là gì?
Tôi có một tài liệu trong đó một số trong những trường là những mảng giá trị. Tôi
không biết trước trường nào hoàn toàn có thể là mảng vì ứng dụng của tôi
hoạt động và sinh hoạt giải trí như một giao diện sever HTTP API câm cho MongoDB được sử dụng bởi . Trong trường hợp này, chúng tôi không thể hiển thị trực tiếp MongoDB. . Trong trường hợp này, chúng tôi không thể hiển thị trực tiếp MongoDB. . Trong trường hợp này, chúng tôi không thể hiển thị trực tiếp MongoDB.
other apps. In this case we cannot expose MongoDB directly.
Tôi hoàn toàn có thể thực hiện một lệnh duy nhất để tôi hoàn toàn có thể update bản ghi và
mongodb tự động $đặt những trường chứa một giá trị duy nhất và $pushes
/ $addsToSet values to fields which are already arrays without me having
to specify?
Tôi hoàn toàn có thể sử dụng một loại lệnh phối hợp nào đó sẽ $set và
$push/$addToSet khi thích hợp? .
db. Mọi người. update ( tên. "Joe" , $set_and_push. lứa tuổi. 18,
favourite_colors. Đỏ );
db. Mọi người. update ( tên. "Joe" , $set_and_addToSet. lứa tuổi. 18,
favourite_colors. Đỏ );
Trong trường hợp này, điều này sẽ update tuổi của Joe và thêm Màu đỏ vào mảng
sắc tố yêu thích của anh ấy (tùy thuộc vào lệnh duy nhất).
Nếu điều này là không thể thì theo như tôi thấy thì điều đó nghĩa là trong thời gian chạy
Tôi phải truy xuất bản ghi. Chuyển đổi BSON thành nhiều chủng loại gốc (trong trường hợp này là Ruby
dev), kiểm tra loại của giá trị trường (Chuỗi, Mảng
v.v. ) sau đó chạy bản update $set cho tất cả nhiều chủng loại giá trị đơn lẻ và sau đó
update $push riêng lẻ cho từng trường loại mảng.
Điều này nghe có vẻ như quá phức tạp và sẽ chậm hơn rất nhiều. Tôi
hãy tưởng tượng, tôi kỳ vọng mình đang thiếu điều gì đó hiển nhiên, điều đó nghĩa là tôi không biết
need to do this.
bât cư lơi khuyên nao cung se được đanh gia cao
jeff
Trong MongoDB, toán tử $push được sử dụng để nối một giá trị đã chỉ định vào một mảng. Nếu trường được đề cập không còn trong tài liệu để update, toán tử $push sẽ thêm trường đó dưới dạng trường mới và gồm có mức giá trị được đề cập làm thành phần của nó. Nếu trường update không phải là trường kiểu mảng thì thao tác không thành công
Tại thời điểm update nếu bản thân giá trị là một mảng, toán tử $push sẽ nối toàn bộ mảng dưới dạng một phần tử
Nếu bạn muốn thêm từng phần tử của giá trị một cách riêng biệt, toán tử $push hoàn toàn có thể được sử dụng với công cụ sửa đổi $each
cú pháp
db.collection.update(Thông số
TênMô tảtrường tên của cột hoặc trường vào tài liệu. giá trị. Đây là những giá trị được chỉ định cho những trường hoặc cột. truy vấn Truy vấn hoàn toàn có thể là một biểu thức hoặc điều kiện hoặc tiêu chí
Bộ sưu tập mẫu "sinh viên"
"_id" : 1, "sem" : 1, "subjects" : [ "phys", "chem", "maths", "gkn", "stat", "astro" ], "achieve" : [ 70, 87, 90, 90, 65, 81 ]Ví dụ về toán tử MongoDB $push
Nếu tất cả chúng ta muốn nối 95 vào trường mảng đạt được đối với những đối tượng điều kiện là "gkn", hoàn toàn có thể sử dụng lệnh mongodb sau -
> db.student.update( "subjects" : "gkn" , $push: "achieve": 95 );Ở đây trong ví dụ trên, công cụ sửa đổi $each đã được sử dụng để nối nhiều phần tử 77,49,83 vào mảng đạt được khớp với điều kiện đối tượng bằng "gkn"
Toán tử $push và $pull là một phần của toán tử mảng được thiết kế để sửa đổi mảng trong tài liệu MongoDB. Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách hoạt động và sinh hoạt giải trí của những toán tử đẩy và kéo cũng như cách sử dụng chúng với những điều kiện và tương hỗ tương hỗ update
(Bài viết này là một phần của Hướng dẫn MongoDB của chúng tôi. Sử dụng menu bên phải để điều hướng. )
Toán tử đẩy và kéo là gì?
Đẩy và kéo là hai thao tác được sử dụng để thêm và xóa những phần tử khỏi mảng trong tài liệu MongoDB. Việc đẩy và kéo những phần tử được thực hiện bằng phương pháp sử dụng những toán tử $push và $pull của MongoDB, tương ứng
- Toán tử $push nối một giá trị đã chỉ định vào một mảngToán tử $pull xóa những giá trị khỏi một mảng khớp với một điều kiện đã chỉ định
Cú pháp cơ bản của toán tử $push
$push:Cú pháp cơ bản của toán tử $pull
$pull: condition>, ..Hãy xem xét từng rõ ràng hơn, gồm có cách chúng hoạt động và sinh hoạt giải trí và cách bạn hoàn toàn có thể sử dụng chúng
Cách hoạt động và sinh hoạt giải trí của toán tử MongoDB $push
Bạn hoàn toàn có thể thấy toán tử $push nhận hai đối số
- trường mảngGiá trị được thêm vào trường mảng đã chỉ định
Nếu trường mảng không còn trong tài liệu, toán tử $push sẽ tạo một trường mảng mới. Tuy nhiên, nếu trường được chỉ định không phải là một mảng, MongoDB sẽ trả về lỗi
công cụ sửa đổi toán tử $push
Chức năng của toán tử $push hoàn toàn có thể được mở rộng hơn thế nữa bằng phương pháp sử dụng những công cụ sửa đổi sau
- mỗi $. Công cụ sửa đổi $each được sử dụng để nối nhiều giá trị vào một mảng. Nếu toán tử $each không được chỉ định, tất cả những giá trị trong toán tử $push sẽ được thêm dưới dạng một mục vào trường mảng trong tài liệu$lát. Điều này số lượng giới hạn số phần tử trong mảng. Tuy nhiên, điều này phải được sử dụng cùng với công cụ sửa đổi $each$sắp xếp. Công cụ sửa đổi $sort sắp xếp thứ tự những mục trong mảng. Công cụ sửa đổi này cũng yêu cầu sử dụng công cụ sửa đổi $eachvị trí $. Theo mặc định, toán tử $push nối một mục mới vào cuối một mảng. Sử dụng công cụ sửa đổi vị trí $ nếu bạn muốn chỉ định rõ ràng vị trí nơi mục sẽ được thêm vào
Hoạt động $push được thực hiện theo thứ tự sau, bất kể thứ tự mà những công cụ sửa đổi được xác định
Cập nhật mảng để thêm những phần tử vào những vị trí đã chỉ địnhSắp xếp mảng nếu công cụ sửa đổi $sort được chỉ địnhCắt mảng nếu công cụ sửa đổi $slice được chỉ địnhLưu trữ mảngTiếp theo, tất cả chúng ta sẽ xem xét cách tất cả chúng ta hoàn toàn có thể sử dụng những hoạt động và sinh hoạt giải trí sinh hoạt $push của MongoDB để thao tác với tài liệu. Tôi sẽ đưa ra một vài ví dụ, vì vậy hãy chuyển đến ví dụ bạn cần
Đối với tập tài liệu cơ sở cho những ví dụ này, tôi sẽ sử dụng bộ sưu tập “vehicledetails”
db.vehicledetails.find().pretty()Kết quả
Nối một giá trị duy nhất vào một mảng
Hãy cho chúng tôi xem cách chúng tôi hoàn toàn có thể nối thêm một giá trị vào một mảng khi có trường mảng và trường đó không còn. Trong tất cả những ví dụ, trường “_id” được sử dụng để cho biết thêm thêm mảng nào sẽ được thêm vào tài liệu nào
Thí dụ. Không có trường mảng
Một trường mảng mới sẽ được tạo với tên trường được chỉ định trong toán tử $push
db.vehicledetails.update("_id": ObjectId("5fbc52f05f9a62418038240d"), $push: "vehicle_colours": "red")Kết quả
Thí dụ. Khi trường mảng xuất hiện
Mục mới sẽ được thêm vào cuối mảng
db.vehicledetails.update("_id": ObjectId("5fbc52f05f9a62418038240d"), $push: "vehicle_colours": "green")Kết quả
Nếu chúng tôi nỗ lực sử dụng toán tử $push cho trường không phải mảng, nó sẽ dẫn đến lỗi. Đoạn mã sau trả về lỗi khi chúng tôi đang cố nối thêm một giá trị vào trường không phải mảng “make”
________số 8Kết quả
Nối nhiều giá trị vào một mảng
Bạn hoàn toàn có thể nối nhiều giá trị vào một mảng có hoặc không còn công cụ sửa đổi $each
Thí dụ. Nhiều giá trị không còn công cụ sửa đổi $each
Nếu không còn công cụ sửa đổi $each, MongoDB sẽ nối tất cả những giá trị dưới dạng một giá trị vào trường mảng đã chỉ định
db.vehicledetails.update("_id": ObjectId("5fbc52f55f9a62418038240e"), $push: "vehicle_colours": ["blue", "red", "yellow"])Kết quả
Tại đây, bạn hoàn toàn có thể thấy “xanh dương”, “đỏ” và “vàng” là những phần tử của một mảng mới được tạo. Nhưng mảng đó chỉ là một phần tử của mảng “vehical_colors”
Thí dụ. Nhiều giá trị với công cụ sửa đổi $each
Khi một thao tác $push được xác định bằng công cụ sửa đổi $each, mỗi phần tử trong thao tác $push sẽ được thêm vào mảng dưới dạng những mục riêng lẻ
"_id" : 1, "sem" : 1, "subjects" : [ "phys", "chem", "maths", "gkn", "stat", "astro" ], "achieve" : [ 70, 87, 90, 90, 65, 81 ] 0Kết quả
Ở đây, “vehicle_colors” có ba thành phần sau thao tác $push
Sử dụng Công cụ sửa đổi $sort và $slice
Trong phần này, chúng tôi sẽ trình bày cách sử dụng những công cụ sửa đổi $sort và $slice bằng phương pháp sử dụng tài liệu sau đây trong bộ sưu tập “vehicledetails”
Hãy để chúng tôi thêm màu “bạc” vào trường mảng “vehicle_colours” và sắp xếp nội dung theo thứ tự bảng vần âm (thứ tự tăng dần)
"_id" : 1, "sem" : 1, "subjects" : [ "phys", "chem", "maths", "gkn", "stat", "astro" ], "achieve" : [ 70, 87, 90, 90, 65, 81 ] 1Kết quả
Đầu ra ở trên cho tất cả chúng ta thấy rằng những màu mới đã được thêm vào và mảng đã được sắp xếp theo thứ tự bảng vần âm. Trong ví dụ sau, tất cả chúng ta sẽ thêm màu “xanh đậm” vào trường mảng trong khi sắp xếp theo thứ tự bảng vần âm và sử dụng công cụ sửa đổi $slice để số lượng giới hạn mảng ở 5 phần tử
"_id" : 1, "sem" : 1, "subjects" : [ "phys", "chem", "maths", "gkn", "stat", "astro" ], "achieve" : [ 70, 87, 90, 90, 65, 81 ] 2Kết quả
Sử dụng công cụ sửa đổi vị trí $
Công cụ sửa đổi vị trí $ được sử dụng để chỉ định vị trí trong mảng nơi mục mới sẽ được thêm vào. Điều này sẽ ghi đè hành vi mặc định của việc thêm những mục vào cuối mảng
Trong ví dụ sau, tất cả chúng ta sẽ thêm màu “white” vào đầu trường mảng “vehicle_colours”. Trong công cụ sửa đổi “$position”, số không (0) được sử dụng để chỉ vị trí đầu tiên (chỉ số 0) của mảng
$pull:Cách hoạt động và sinh hoạt giải trí của toán tử MongoDB $pull
Toán tử $pull được sử dụng để xóa tất cả những phiên bản của một hoặc nhiều giá trị khỏi tài liệu MongoDB khớp với một điều kiện đã chỉ định. Nếu một mảng chứa những tài liệu được nhúng hoặc lồng nhau, thì điều kiện toán tử $pull đã chỉ định sẽ được áp dụng cho từng phần tử mảng như thể mỗi phần tử mảng là một tài liệu trong một bộ sưu tập
Khi giá trị được chỉ định bị xóa là một mảng, toán tử $pull chỉ xóa những phần tử trong mảng khớp với giá trị đúng chuẩn được chỉ định, gồm có cả thứ tự xác định những phần tử. Nếu giá trị được chỉ định cần xóa là một tài liệu, toán tử $pull sẽ xóa những phần tử khớp với những trường và giá trị được chỉ định. Trong trường hợp này, thứ tự những trường bị vô hiệu
Bây giờ tôi sẽ hướng dẫn bạn một vài ví dụ về toán tử $pull. Chuyển đến những cái bạn cần
Trong những ví dụ này, chúng tôi sẽ sử dụng tập tài liệu sau để chứng tỏ
Loại bỏ một mục duy nhất khỏi một mảng
Ở đây, chúng tôi sẽ xóa giá trị duy nhất “2022” khỏi trường mảng “model_year”. Trường “_id” được sử dụng để chỉ ra tài liệu mà thao tác $pull sẽ ra mắt trên đó
$pull: condition>, .. 1Kết quả
Xóa tất cả những mục bằng một giá trị được chỉ định
Trong ví dụ này, tất cả chúng ta sẽ sử dụng bộ sưu tập “vehicledetails” để xóa màu “blue” và “green” khỏi trường mảng “vehicle_colours” và xóa năm quy mô 2022 khỏi trường mảng “model_year”
$pull: condition>, .. 2Kết quả
Xóa những mục phù phù phù hợp với Điều kiện $pull đã chỉ định
Sử dụng tập hợp “student_grades”, tất cả chúng ta hãy tạo một điều kiện để xóa tất cả những điểm nhỏ hơn hoặc bằng 50 khỏi tài liệu sau
Tài liệu chưa sửa đổi
Tài liệu sửa đổi
$pull: condition>, .. 3Kết quả
Điều kiện xác định ($lte. 50) đã xóa bất kỳ mục nào nhỏ hơn hoặc bằng 50 trong trường mảng "điểm"
Xóa những mục khỏi một mảng tài liệu
Trong ví dụ này, chúng tôi sẽ sử dụng bộ sưu tập “student_grades” để xóa tất cả những giá trị nhỏ hơn hoặc bằng 50 trong trường mảng “grades” trong tất cả những tài liệu trong bộ sưu tập
Bộ sưu tập chưa sửa đổi
Bộ sưu tập đã sửa đổi
$pull:Đầu ra ở trên cho tất cả chúng ta thấy rằng bất kỳ giá trị nào nhỏ hơn hoặc bằng 50 đã bị xóa khỏi trường mảng “grades” trong tất cả những tài liệu trong bộ sưu tập “student_grades”
Post a Comment