- Tạo ứng dụng Spring Boot bằng Spring Launchizr
- Cấu hình Cassandra trong Spring Boot
- Định cấu hình nhóm kết nối Tomcat trên Spring Boot
- Định tuyến tin nhắn Camel đến Artemis được nhúng bằng WildFly
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ị.
Công cụ sửa đổi$inc
Bạ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 }
Đượ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 "."
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.
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 }
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" }
$đẩ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" ] }
$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" ] }
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 } ] }
Lời nói đầu: Đôi khi, một cơ sở dữ liệu có nhiều tài khoản, bao gồm quản trị viên cơ sở dữ liệu, nhà phát triển, nhân viên hỗ trợ vận hành và bảo trì, v.v. Có thể có nhiều tài khoản có quyền tương đối lớn, chẳng hạn như quyền vận hành DDL (tạo, sửa đổi, xóa các thủ tục được lưu trữ, Tạo, sửa đổi, xóa bảng, v.v.), nếu bạn có nhiều tài khoản, hãy quản lý
Câu hỏi này đã có câu trả lời: Bế tắc biến điều kiện (2 câu trả lời) Đã đóng 5 năm trước. Trong khi nghiên cứu đa luồng, tôi đã viết đoạn mã sau nhưng không thấy kết quả nào trên màn hình. Tôi đang làm gì sai ở đây? tôi mong đợi
Sao chép mã như sau:
Sao chép mã như sau:
Sao chép mã như sau: Const T_GATEWAY = "1.1.1.1" 'Gateway Const T_NEWDNS1 = "2.2.2.2" 'DNS1
0. Sửa đổi trường văn bản lớn chỉ mục để hỗ trợ sắp xếp PUT http://localhost:9200/lrc_blog/_mapping // Nội dung yêu cầu { "properties": { "title": { "t
React chỉ hiển thị lại khi trạng thái thay đổi. Vậy tại sao tôi có thể trực tiếp nhìn thấy những thay đổi tôi đã thực hiện đối với DOM thực? Tôi biết tôi đang sửa đổi DOM thực, nhưng điều gì sẽ kích hoạt kết xuất lại khi tôi hoàn toàn không thay đổi trạng thái. nhập R
Xcode beta 5 giới thiệu @FetchRequest cho SwiftUI. Tôi có Chế độ xem có @FetchRequest. NSFetchRequest được tạo trong trình quản lý quản lý.
đóng cửa. Câu hỏi này cần tập trung hơn. Hiện tại nó không chấp nhận câu trả lời. Bạn muốn cải thiện câu hỏi này? Câu hỏi được cập nhật để chỉ tập trung vào một vấn đề chỉnh sửa bài đăng này Đã đóng 7 năm trước. Cải thiện câu hỏi này
Tôi có một biểu thức [text][id] cần được thay thế bằng văn bản liên kết. Giải pháp là (id là số nguyên) $s = preg_replace("/\[([^\]]+)(\]*)\ ]\[ ([0-9]+)\]/","$1$
Tôi có một tập tin trong kho lưu trữ mà tôi không muốn ai cập nhật. Tôi có thể làm gì? Câu trả lời hay nhất bạn muốn svn lock: http://www.linxit.de/svnbook/en/1.2/svn.ref.svn.c.lock
Nói rằng tôi có một danh sách các mục. Tôi muốn xuất sang csv, nhưng trước đó tôi muốn thực hiện một số tính toán/sửa đổi. Về cơ bản, thiết lập trông như thế này: PS C:\Files> gci Directory: C:\Files Mode
Tôi có một câu hỏi rất đơn giản - có thể sửa đổi mã nguồn của các API Java như Junit, JABX không? Tôi biết đây có vẻ là một câu hỏi thực sự ngu ngốc, nhưng nó đã làm tôi khó chịu một thời gian. Câu trả lời hay nhất Nếu bạn có thể lấy được mã nguồn thì vui lòng
Tôi có một ô có các biến/cột bao gồm danh sách các ô có hình dạng khác nhau. Tôi muốn thêm một biến/cột cho mỗi tiêu đề (phụ) trong một trong các biến. Ví dụ: loại thư viện dữ liệu này("tibble") aaa aaa # A tibb
Tôi có một số menu thêm các biến vào liên kết hiện tại khi được nhấp vào. Đây là một ví dụ: 1 2 3 xyz Vấn đề của tôi là nếu tôi chọn "y" 2 lần, nó sẽ thêm "&cord=y" 2 lần. Thay vào đó, tôi muốn nó thay thế
Tôi có hai dự án: dự án dịch vụ và dự án cài đặt dịch vụ. Mục dịch vụ có thông tin lắp ráp cho sản phẩm của tôi. Nó bao gồm thông tin công ty và tên dịch vụ chính xác. Tất cả điều này dường như bị bỏ qua khi dịch vụ thực sự được cài đặt. Khi cài đặt một dịch vụ, nó sử dụng ini trong trình cài đặt dịch vụ
Khi nào đoạn mã sau có thể có tác dụng phụ? @some = map { s/xxx/y/; $_ } @some; perlcritic hiểu điều này là nguy hiểm vì ví dụ: @other = map { s/xxx/y/
Tôi muốn biết giải pháp nào sau đây tốt hơn: Tôi muốn sửa đổi một số tệp .class và tôi nhận thấy có hai cách để thực hiện: dịch ngược tệp .class, sửa đổi nó và cuối cùng biên dịch lại. - Sửa đổi trực tiếp bằng trình soạn thảo hex. Cảm ơn, câu trả lời hay nhất là ở đây
Đây là mã nút onclick của tôi. Tôi muốn chương trình của mình đợi người dùng nhấp vào JPanel và khi người dùng nhấp vào JPanel, nó sẽ in tên của nó trên bảng điều khiển. Mã nút này không hiển thị đầu ra JPopupMenu popu
Tôi đang sử dụng một API cụ thể có phương thức "getName()". getName() trả về một chuỗi. Có thể sửa đổi chuỗi này? API không chứa các phương thức sửa đổi và String getName() trả về một giá trị riêng tư
Tôi là một lập trình viên xuất sắc, rất giỏi!