cuốn sách gpt4 ai đã làm

MongoDB: công cụ sửa đổi mongodb

In lại Tác giả: Người biết Thời gian cập nhật: 2024-03-13 05:57:41 28 4
mua khóa gpt4 Nike

MongoDB: công cụ sửa đổi mongodb

1. Giới thiệu

Trong mongodb, thường chỉ cần cập nhật một phần tài liệu. Sử dụng công cụ sửa đổi cập nhật nguyên tử, bạn chỉ có thể cập nhật một phần giá trị khóa của tài liệu và công cụ sửa đổi cập nhật cực kỳ hiệu quả. để chỉ định các cập nhật phức tạp, chẳng hạn như điều chỉnh, thêm hoặc xóa khóa, cũng có thể hoạt động trên mảng và tài liệu được nhúng. Khi thêm, sửa hoặc xóa khóa, bạn nên sử dụng từ bổ nghĩa $. Để đặt giá trị của "foo" thành "bar", các lỗi phổ biến như sau:

db.coll.update(tiêu chí,{"foo:"bar"})

Trên thực tế, tình huống này là sai. Cách tiếp cận này sẽ thay thế toàn bộ tài liệu bằng {"foo:"bar"}. Hãy đảm bảo sử dụng công cụ sửa đổi bắt đầu bằng $ để sửa đổi cặp khóa/giá trị.

2. Các loại sửa đổi

$inc

Công cụ sửa đổi$incBạn có thể tăng hoặc giảm khóa trong tài liệu có giá trị là số (chỉ có thể là số đáp ứng yêu cầu)

> db.user.save({"uid":"202203","type":1",size:10}) WriteResult({ "nInserted" : 1 }) > db.user.find() { "_id " : ObjectId("6220c5b308f967a1701d89d2"), "uid" : "202203", "type" : "1", "size" : 10 } > db.user.update({"uid" : "202203"},{"$inc":{"size" : 1}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.user.find() { "_id" : ObjectId("6220c5b308f967a1701d89d2"), "uid" : "202203", "type" : "1", "size" : 11 } > db.user.update({"uid" : "202203"}, {"$inc":{"size" : 2}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.user.find() { "_id" : ObjectId("6220c5b308f967a1701d89d2"), "uid" : "202203", "type" : "1", "kích thước" : 13 } > db.user.update({"uid" : "202203"},{"$inc":{"size" : -1}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.user.find() { "_id" : ObjectId("6220c5b308f967a1701d89d2"), "uid" : "202203", "type" : "1", "size" : 12 }

bộ $

Được sử dụng để chỉ định khóa và cập nhật giá trị khóa. Nếu khóa không tồn tại, hãy tạo nó.

> db.user.find() { "_id" : ObjectId("6220c5b308f967a1701d89d2"), "uid" : "202203", "type" : "1", "size" : 12 } # Gán giá trị khi khóa thực hiện không tồn tại > db.user.update({"uid":"202203","type":"1","size":12},{"$set":{"name""zhangsan"}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.user.find() { "_id" : ObjectId("6220c5b308f967a1701d89d2"), "uid" : "202203", "type" : "1", "size" : 12, "name" : "zhangsan" } # Gán giá trị cho khóa khi nó tồn tại> db.user.update({"uid":"202203","type":"1","size":12},{"$set":{"name""lisi"}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.user.find() { "_id" : ObjectId("6220c5b308f967a1701d89d2"), "uid" : "202203", "type" : "1", "size" : 12, "name" : "lisi" } # Loại giá trị của khóa có thể thay đổi> db.user.update({"uid":"202203","type":"1","size":12},{"$set":{"name":["java"".net" ,"c++"]}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.user.find() { "_id" : ObjectId("6220c5b308f967a1701d89d2"), "uid" : "202203", "type" : "1", "size" : 12, "name" : [ "java", ".net", "c++ " ] } # Dành cho tài liệu được nhúng > db.user.find() { "_id" : ObjectId("6220c5b308f967a1701d89d2"), "uid" : "202203", "type" : "1", "size" : 12, "name" : [ "java", ".net", "c++" ] } { " _nhận dạng" : ObjectId("6220c9ee08f967a1701d89d3"), "name" : "toyota", "type" : "suv", "size" : { "height" : 10, "width" : 5, "length" : 15 } } > db.user.update({"name://toyota"},{"$set":{"size.height":8}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified " : 1 }) > db.user.find() { "_id" : ObjectId("6220c5b308f967a1701d89d2"), "uid" : "202203", "type" : "1", "size" : 12, "name" : [ "java", ".net", "c++" ] } { " _nhận dạng" : ObjectId("6220c9ee08f967a1701d89d3"), "name" : "toyota", "type" : "suv", "size" : { "height" : 8, "width" : 5, "length" : 15 } }

Hiển thị: Khi cập nhật tài liệu được nhúng bằng $set, hãy sử dụng phương thức kết nối "."

$unset

Bạn có thể thấy ý nghĩa của nó theo nghĩa đen, nó chủ yếu dùng để xóa phím

> db.user.find() { "_id" : ObjectId("6220c5b308f967a1701d89d2"), "uid" : "202203", "type" : "1", "size" : 12, "name" : [ "java" , ".net", "c++" ] } { "_id" : ObjectId("6220c9ee08f967a1701d89d3"), "name" : "toyota", "type" : "suv", "size" : { "height" : 8, "width" : 5, "length" : 15 } } > db. user.update({"uid" : "202203","type" : "1"},{"$unset":{"size":1}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.user.find() { "_id" : ObjectId("6220c5b308f967a1701d89d2"), "uid" : "202203", "type" : "1", "name" : [ "java", ".net", "c++" ] } { "_id" : ObjectId("6220c9ee08f967a1701d89d3"), "name" : "toyota" , "loại" : "suv", "kích thước" : { "chiều cao" : 8, "chiều rộng" : 5, "length" : 15 } } > db.user.update({"uid" : "202203","type" : "1"},{"$unset":{"name":0}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.user.find() { "_id" : ObjectId("6220c5b308f967a1701d89d2"), "uid" : "202203", "type" : "1" } { "_id" : ObjectId("6220c9ee08f967a1701d89d3"), "name" : "toyota", "type" : "suv" , "kích cỡ" : { "chiều cao" : 8, "chiều rộng" : 5, "chiều dài" : 15 } } > db.user.update({"uid" : "202203","type" : "1"},{"$unset": {"type":-1}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.user.find() { "_id" : ObjectId("6220c5b308f967a1701d89d2"), "uid" : "202203" } { "_id" : ObjectId("6220c9ee08f967a1701d89d3"), "name" : "toyota", "type " : "suv", "size" : { "chiều cao" : 8, "chiều rộng" : 5, "chiều dài" : 15 } }

Khi sử dụng công cụ sửa đổi $unset, cho dù bạn sử dụng 1, 0, -1 hay một chuỗi cụ thể cho khóa mục tiêu, bạn đều có thể xóa khóa mục tiêu.

nâng cao

upsert là một loại cập nhật đặc biệt. Khi không có tài liệu nào đáp ứng các điều kiện, một tài liệu mới sẽ được tạo dựa trên điều kiện này và tài liệu được cập nhật nếu tìm thấy tài liệu phù hợp thì nó sẽ được cập nhật bình thường.

Sử dụng upsert không chỉ có thể tránh được các điều kiện chạy đua mà còn giảm số lượng mã (tham số thứ ba của update đại diện cho upsert này, khi tham số là đúng)

> db.user.find() { "_id" : ObjectId("6220d4a308f967a1701d89d5"), "size" : 11 } > db.user.save({"size":11},{$inc:{"size": 3}}) WriteResult({ "nInserted" : 1 }) > db.user.find() { "_id" : ObjectId("6220d4a308f967a1701d89d5"), "size" : 11 } { "_id" : ObjectId("6220d4be08f967a1701d89d6"), "size" : 11 } > db.user.update({"size":11},{$inc:{"size":3}},false) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 } ) > db.user.find() { "_id" : ObjectId("6220d4a308f967a1701d89d5"), "size" : 14 } { "_id" : ObjectId("6220d4be08f967a1701d89d6"), "size" : 11 } > db.user.update({"size":11},{$inc:{"size":3}},true) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 } ) > db.user.find() { "_id" : ObjectId("6220d4a308f967a1701d89d5"), "size" : 14 } { "_id" : ObjectId("6220d4be08f967a1701d89d6"), "size" : 14 }

chức năng lưu

Bạn có thể chèn tài liệu khi nó không tồn tại và cập nhật nó khi nó tồn tại.

Nếu tài liệu chứa "_id", upsert sẽ được gọi. Nếu không, chèn được gọi

> db.user.find() { "_id" : ObjectId("6220d63b08f967a1701d89d7"), "name" : "lisi", "age" : "23" } > db.user.save({"_id":ObjectId("6220d63b08f967a1701d89d7"),"name://zhangsan"}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.user.find() { "_id" : ObjectId("6220d63b08f967a1701d89d7"), "name" : "zhangsan" }

Công cụ sửa đổi mảng – $push

$đẩy– Chìa khóa cho kiểu mảng của tài liệuThêm phần tử mảng mà không lọc dữ liệu trùng lặp. Nếu khóa tồn tại khi thêm, loại giá trị khóa phải là một mảng; nếu khóa không tồn tại, hãy tạo khóa kiểu mảng.

> db.user.find() { "_id" : ObjectId("6220c9ee08f967a1701d89d3"), "name" : "toyota", "type" : "suv", "size" : { "height" : 8, "width" : 5, "length" : 15 } } # Đầu tiên nhấn tiêu đề khóa không tồn tại trong tài liệu hiện tại > db.user.update({"name://toyota"},{$push:{"title":t1"}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.user.find() { "_id" : ObjectId("6220c9ee08f967a1701d89d3"), "name" : "toyota", "type" : "suv", "size" : { "height" : 8, "width" : 5, "length" : 15 }, "title" : [ "t1" ] } # Đẩy một giá trị vào tiêu đề> db.user.update({"name":"toyota"},{$push:{"title":t2"}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.user.find() { "_id" : ObjectId("6220c9ee08f967a1701d89d3"), "name" : "toyota", "type" : "suv", "size" : { "height" : 8, "width" : 5, "length" : 15 }, "title" : [ "t1", "t2" ] } # Đẩy một giá trị vào tiêu đề> db.user.update({"name":"toyota"},{$push:{"title":t2"}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.user.find() { "_id" : ObjectId("6220c9ee08f967a1701d89d3"), "name" : "toyota", "type" : "suv", "size" : { "height" : 8, "width" : 5, "length" : 15 }, "title" : [ "t1", "t2", "t2" ] }

Công cụ sửa đổi mảng-- $pop,$kéo

$pop xóa các phần tử khỏi mảng từ đầu hoặc cuối mảng

> db.user.find() { "_id" : ObjectId("6220c9ee08f967a1701d89d3"), "name" : "toyota", "type" : "suv", "size" : { "height" : 8, "width" : 5, "độ dài" : 15 }, "tiêu đề" : [ "t1", "t2", "t2", "t3", "t4" ] } # Xóa 1 ở cuối mảng > db.user.update({"name://toyota"},{$pop:{"title":1} }) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.user.find() { "_id" : ObjectId("6220c9ee08f967a1701d89d3"), "name" : "toyota", "type" : "suv", "size" : { "height" : 8, "width" : 5, "length" : 15 }, "title" : [ "t1", "t2", "t2", "t3" ] } # Từ đầu mảng -1 > db.user.update({"name://toyota"},{$pop:{"title":-1}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.user.find() { "_id" : ObjectId("6220c9ee08f967a1701d89d3"), "name" : "toyota", "type" : "suv", "size" : { "height" : 8, "width" : 5, "length" : 15 }, "title" : [ "t2", "t2", "t3" ] }

$pull loại bỏ các phần tử đáp ứng điều kiện khỏi mảng

> db.user.find() { "_id" : ObjectId("6220c9ee08f967a1701d89d3"), "name" : "toyota", "type" : "suv", "size" : { "height" : 8, "width" : 5, "độ dài" : 15 }, "tiêu đề" : [ "t2", "t2", "t3" ] } > db.user.update({"name" : "toyota"},{$pull:{"title://t2"}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.user.find() { "_id" : ObjectId("6220c9ee08f967a1701d89d3"), "name" : "toyota", "type" : "suv", "size" : { "height" : 8, "width" : 5, "length" : 15 }, "title" : [ "t3" ] }

Công cụ sửa đổi định vị mảng

Khi cần thao tác với các giá trị trong mảng, bạn có thể sử dụng toán tử vị trí hoặc định vị ("$"). Mảng bắt đầu bằng 0 và bạn có thể trực tiếp sử dụng chỉ số dưới làm khóa để chọn các phần tử.

> db.user.find() { "_id" : ObjectId("6220d21608f967a1701d89d4"), "uid" : "001", "comments" : [ { "name" : "t1", "size" : 10 }, { "tên" : "t2", "kích thước" : 12 } ] } > db.user.update({"uid":001"},{$inc:{"comments.0.size":11}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified " : 1 }) > db.user.find() { "_id" : ObjectId("6220d21608f967a1701d89d4"), "uid" : "001", "comments" : [ { "name" : "t1", "size" : 21 }, { "name" : "t2", "size" : 12 } ] }
28 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress