Tôi cần xóa một khóa và giá trị nhất định khỏi mọi mục trong một bộ sưu tập cụ thể. Tôi đã xem xét loại bỏ và điều đó dường như chỉ dành cho toàn bộ các mục. Nhìn vào cập nhật, tôi không tin rằng việc cập nhật một khóa cụ thể với NULL hoặc một chuỗi trống sẽ đạt được những gì tôi đang cố gắng làm. Tôi rất là người mới bắt đầu với MongoDB, vì vậy xin vui lòng xin lỗi sự thiếu hiểu biết của tôi.
Câu chuyện dài, làm thế nào tôi có thể biến
{
"_id" : 1234,
"name" : "Chris",
"description" : "Awesome"
}
vào trong
{
"_id" : 1234,
"name" : "Chris"
}
mà không xóa mục nhập và tạo một mục nhập mới, hoặc sử dụng bất kỳ lệnh phi MongoDB nào? Cảm ơn!
Hỏi ngày 13 tháng 4 năm 2012 lúc 18:58Apr 13, 2012 at 18:58
1
Hãy thử
{
"_id" : 1234,
"name" : "Chris"
}
9 trong cuộc gọi đến db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
0.Như thế này:
db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
Và, như Vikneshwar đã nhận xét, nếu bạn muốn xóa một trường khỏi tất cả [hoặc nhiều] tài liệu, bạn có thể sử dụng
db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
1 như thế này:db.collection_name.updateMany[{}, { $unset : { description : 1} }]
Đã trả lời ngày 13 tháng 4 năm 2012 lúc 19:04Apr 13, 2012 at 19:04
Bee Sanbee SanBee San
2.4852 Huy hiệu vàng18 Huy hiệu bạc19 Huy hiệu đồng2 gold badges18 silver badges19 bronze badges
7
Để tham khảo một gói và xóa các "khóa" khác nhau, hãy thử cái này
db['name1.name2.name3.Properties'].remove[[ { "key" : "name_key1" }, { "key" : "name_key2" }, { "key" : "name_key3" } ]]
Taskinoor
45K12 Huy hiệu vàng116 Huy hiệu bạc140 Huy hiệu đồng12 gold badges116 silver badges140 bronze badges
Đã trả lời ngày 24 tháng 4 năm 2015 lúc 16:48Apr 24, 2015 at 16:48
Aspadacioaspadacioaspadacio
3132 huy hiệu bạc11 huy hiệu đồng2 silver badges11 bronze badges
Cũng nghĩ về
db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
2 sẽ chèn hàng của bạn dưới dạng tài liệu mới nếu db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
3 không tồn tại hoặc cập nhật tài liệu hiện có nếu có.Đã trả lời ngày 14 tháng 4 năm 2012 lúc 9:12Apr 14, 2012 at 9:12
Adrien M.Adrien M.Adrien M.
Huy hiệu vàng 3131 Huy hiệu bạc9 Huy hiệu đồng1 gold badge3 silver badges9 bronze badges
Có chìa khóa trong MongoDB không? → MongoDB Manual
Tất cả các tài liệu trong bộ sưu tập MongoDB đều có khóa chính được đặt tên là _ID. Trường này được tự động gán cho một tài liệu khi chèn, do đó, hiếm khi cần cung cấp nó.
Tài liệu về nhà → Hướng dẫn sử dụng MongoDB
Removes documents from a collection.
Phương pháp Dành cho Mongosh
4 method can have one of two syntaxes. The
db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
6 method can take a query document and an optional db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
7 boolean:db.collection.remove[ , ]
db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
4Remove tài liệu từ một bộ sưu tập.Phương pháp
db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
4 có thể có một trong hai cú pháp. Phương thức db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
6 có thể lấy tài liệu truy vấn và db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
7 Boolean tùy chọn:db.collection.remove[ , { justOne: , writeConcern: , collation: , let: // Added in MongoDB 5.0 } ]
| Loại hình | Sự mô tả | ||||||||||
| boolean | tài liệu | ||||||||||
| Loại hình | Sự mô tảWrite Concern. tài liệu | ||||||||||
| Loại hình | Optional. Sự mô tả Đối chiếu cho phép người dùng chỉ định các quy tắc cụ thể về ngôn ngữ để so sánh chuỗi, chẳng hạn như các quy tắc cho Lettercase và Dấu nhấn. tài liệu
Chỉ định tiêu chí xóa bằng cách sử dụng các toán tử truy vấn. Để xóa tất cả các tài liệu trong một bộ sưu tập, hãy truyền một tài liệu trống [ 9].Không bắt buộc. Để giới hạn việc xóa chỉ một tài liệu, được đặt thành 1. Bỏ qua để sử dụng giá trị mặc định của 2 và xóa tất cả các tài liệu phù hợp với tiêu chí xóa.Không bắt buộc. Một tài liệu thể hiện mối quan tâm viết. Bỏ qua để sử dụng mối quan tâm ghi mặc định. Xem Viết mối quan tâm. Bạn không thể chỉ định nhiều đối chiếu cho một hoạt động. Ví dụ: bạn không thể chỉ định các đối chiếu khác nhau trên mỗi trường hoặc nếu thực hiện tìm thấy với một loại, bạn không thể sử dụng một đối chiếu cho tìm và một đối với loại khác. | ||||||||||
let | tài liệu | Optional. Chỉ định một tài liệu với một danh sách các biến. Điều này cho phép bạn cải thiện khả năng đọc lệnh bằng cách tách các biến khỏi văn bản truy vấn. Cú pháp tài liệu là:
Biến được đặt thành giá trị được trả về bởi biểu thức và không thể thay đổi sau đó. Để truy cập giá trị của một biến trong lệnh, hãy sử dụng tiền tố dấu hiệu đô la kép [ 7] cùng với tên biến của bạn trong mẫu 8. Ví dụ: 9.Ghi chúĐể sử dụng một biến để lọc kết quả, bạn phải truy cập biến trong toán tử 0.
|
Để biết ví dụ hoàn chỉnh bằng cách sử dụng
db['name1.name2.name3.Properties'].remove[[ { "key" : "name_key1" }, { "key" : "name_key2" }, { "key" : "name_key3" } ]]
1 và các biến, hãy xem các biến sử dụng trong db['name1.name2.name3.Properties'].remove[[ { "key" : "name_key1" }, { "key" : "name_key2" }, { "key" : "name_key3" } ]]
1Use Variables in db['name1.name2.name3.Properties'].remove[[ { "key" : "name_key1" }, { "key" : "name_key2" }, { "key" : "name_key3" } ]]
1Mới trong phiên bản 5.0.
Có chìa khóa trong MongoDB không?
6 returns an object that contains the status of the operation.db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
Có chìa khóa trong MongoDB không?WriteResult object that contains the status of the operation. |
Phương thức
db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
6 sử dụng lệnh db['name1.name2.name3.Properties'].remove[[ { "key" : "name_key1" }, { "key" : "name_key2" }, { "key" : "name_key3" } ]]
5, sử dụng mối quan tâm ghi mặc định. Để chỉ định một mối quan tâm ghi khác nhau, bao gồm mối quan tâm ghi trong tham số tùy chọn.db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
6 method uses the db['name1.name2.name3.Properties'].remove[[ { "key" : "name_key1" }, { "key" : "name_key2" }, { "key" : "name_key3" } ]]
5 command, which uses the default write concern.
To specify a different write concern, include the write concern in the options parameter.Theo mặc định,
db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
6 xóa tất cả các tài liệu phù hợp với biểu thức db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
8. Chỉ định tùy chọn db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
7 để giới hạn hoạt động để xóa một tài liệu. Để xóa một tài liệu duy nhất được sắp xếp theo thứ tự được chỉ định, hãy sử dụng phương thức FindAndModify [].db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
6 removes all documents that match the db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
8 expression. Specify the db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
7 option to limit the operation to removing a single document. To delete a single document sorted by a specified order, use the
findAndModify[] method.Khi xóa nhiều tài liệu, thao tác xóa có thể xen kẽ với các hoạt động đọc và/hoặc ghi khác vào bộ sưu tập.
Bạn không thể sử dụng phương pháp
db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
6 với bộ sưu tập giới hạn.db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
6 method with a capped collection.Bạn không thể sử dụng phương thức
db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
6 trên bộ sưu tập chuỗi thời gian.db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
6 method on a time series collection.Tất cả các hoạt động
db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
6 cho bộ sưu tập Sharded chỉ định tùy chọn db.collection.remove[ , ]
2 phải bao gồm khóa Shard hoặc trường db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
3 trong đặc tả truy vấn.db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
6 operations for a sharded collection that specify the db.collection.remove[ , ]
2 option must include the shard key or the db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
3 field in the query specification.
6 Các hoạt động Chỉ định db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
2 trong bộ sưu tập Sharded không chứa khóa Shard hoặc trường db.collection.remove[ , ]
3 trả về lỗi. operations specifying db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
db.collection.remove[ , ]
2 in a sharded collection which do not contain either the shard key or the db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
3 field return an error.
4 có thể được sử dụng bên trong các giao dịch đa tài liệu. can be used inside multi-document transactions.db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
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 viết mối quan tâm với các giao dịch, xem giao dịch và viết mối quan tâm.
Quan trọng
Trong hầu hết các trường hợp, giao dịch đa tài liệu phát sinh chi phí hiệu suất lớn hơn so với ghi tài liệu đơn lẻ và sự sẵn có của các giao dịch đa tài liệu không nên là một sự thay thế cho thiết kế lược đồ hiệu quả. Đối với nhiều kịch bản, mô hình dữ liệu được chuẩn hóa [tài liệu và mảng nhúng] sẽ tiếp tục tối ưu cho các trường hợp dữ liệu và sử dụng của bạn. Đó là, đối với nhiều kịch bản, mô hình hóa dữ liệu của bạn một cách thích hợp sẽ giảm thiểu nhu cầu cho các giao dịch đa tài liệu.
Để biết các cân nhắc sử dụng giao dịch bổ sung [như giới hạn thời gian chạy và giới hạn kích thước oplog], xem thêm các cân nhắc sản xuất.
Sau đây là các ví dụ về phương pháp
db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
6.db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
6 method.Để xóa tất cả các tài liệu trong một bộ sưu tập, hãy gọi phương thức
db.collection.remove[ , ]
9 bằng tài liệu truy vấn trống db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
9. Hoạt động sau đây xóa tất cả các tài liệu khỏi bộ sưu tập BIOS:db.collection.remove[ , ]
9 method with an empty query document db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
9. The following operation deletes all documents from the bios collection:Hoạt động này không tương đương với phương pháp
db.collection.remove[ , { justOne: , writeConcern: , collation: , let: // Added in MongoDB 5.0 } ]
1.Để loại bỏ tất cả các tài liệu khỏi bộ sưu tập, có thể sử dụng phương thức
db.collection.remove[ , { justOne: , writeConcern: , collation: , let: // Added in MongoDB 5.0 } ]
1 hiệu quả hơn để bỏ toàn bộ bộ sưu tập, bao gồm các chỉ mục, sau đó tạo lại bộ sưu tập và xây dựng lại các chỉ mục.Để xóa các tài liệu phù hợp với tiêu chí xóa, hãy gọi phương thức
db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
6 với tham số db.collection.remove[ , { justOne: , writeConcern: , collation: , let: // Added in MongoDB 5.0 } ]
4:db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
6 method with the db.collection.remove[ , { justOne: , writeConcern: , collation: , let: // Added in MongoDB 5.0 } ]
4 parameter:Hoạt động sau đây sẽ loại bỏ tất cả các tài liệu khỏi bộ sưu tập
db.collection.remove[ , { justOne: , writeConcern: , collation: , let: // Added in MongoDB 5.0 } ]
5 trong đó db.collection.remove[ , { justOne: , writeConcern: , collation: , let: // Added in MongoDB 5.0 } ]
6 lớn hơn db.collection.remove[ , { justOne: , writeConcern: , collation: , let: // Added in MongoDB 5.0 } ]
7:db.products.remove[ { qty: { $gt: 20 } } ]
Hoạt động sau đây cho một bộ bản sao sẽ loại bỏ tất cả các tài liệu khỏi bộ sưu tập
db.collection.remove[ , { justOne: , writeConcern: , collation: , let: // Added in MongoDB 5.0 } ]
5 trong đó db.collection.remove[ , { justOne: , writeConcern: , collation: , let: // Added in MongoDB 5.0 } ]
6 lớn hơn db.collection.remove[ , { justOne: , writeConcern: , collation: , let: // Added in MongoDB 5.0 } ]
7 và chỉ định mối quan tâm ghi của collation: { locale: , caseLevel: , caseFirst: , strength: , numericOrdering: , alternate: , maxVariable: , backwards: }
1 với collation: { locale: , caseLevel: , caseFirst: , strength: , numericOrdering: , alternate: , maxVariable: , backwards: }
2 của 5000 mili giây. Hoạt động này hoặc trở lại sau khi viết tuyên truyền cho cả chính và một phụ, hoặc hết lần sau 5 giây.{
"_id" : 1234,
"name" : "Chris"
}
0Để xóa tài liệu đầu tiên phù hợp với tiêu chí xóa, hãy gọi phương thức
db.collection.remove[ , ]
9 với tiêu chí db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
8 và tham số db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
7 được đặt thành db.collection_name.updateMany[{}, { $unset : { description : 1} }]
1 hoặc collation: { locale: , caseLevel: , caseFirst: , strength: , numericOrdering: , alternate: , maxVariable: , backwards: }
7.db.collection.remove[ , ]
9 method with the db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
8 criteria and the db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
7 parameter set to db.collection_name.updateMany[{}, { $unset : { description : 1} }]
1 or collation: { locale: , caseLevel: , caseFirst: , strength: , numericOrdering: , alternate: , maxVariable: , backwards: }
7.Hoạt động sau đây sẽ loại bỏ tài liệu đầu tiên khỏi bộ sưu tập
db.collection.remove[ , { justOne: , writeConcern: , collation: , let: // Added in MongoDB 5.0 } ]
5 trong đó db.collection.remove[ , { justOne: , writeConcern: , collation: , let: // Added in MongoDB 5.0 } ]
6 lớn hơn db.collection.remove[ , { justOne: , writeConcern: , collation: , let: // Added in MongoDB 5.0 } ]
7:{
"_id" : 1234,
"name" : "Chris"
}
1Đối chiếu cho phép người dùng chỉ định các quy tắc cụ thể về ngôn ngữ để so sánh chuỗi, chẳng hạn như các quy tắc cho Lettercase và Dấu nhấn.
Bộ sưu tập
{ : , ..., : }
1 có các tài liệu sau:{
"_id" : 1234,
"name" : "Chris"
}
2Hoạt động sau bao gồm tùy chọn đối chiếu:
{
"_id" : 1234,
"name" : "Chris"
}
3Mới trong phiên bản 5.0.
Để xác định các biến mà bạn có thể truy cập ở nơi khác trong lệnh, hãy sử dụng tùy chọn LET.let option.
Ghi chú
Để lọc kết quả bằng cách sử dụng một biến, bạn phải truy cập biến trong toán tử
db['name1.name2.name3.Properties'].remove[[ { "key" : "name_key1" }, { "key" : "name_key2" }, { "key" : "name_key3" } ]]
0.Tạo bộ sưu tập
{ : , ..., : }
3:{
"_id" : 1234,
"name" : "Chris"
}
4Ví dụ sau đây xác định biến
{ : , ..., : }
4 trong db['name1.name2.name3.Properties'].remove[[ { "key" : "name_key1" }, { "key" : "name_key2" }, { "key" : "name_key3" } ]]
1 và sử dụng biến để xóa hương vị bánh dâu tây:{
"_id" : 1234,
"name" : "Chris"
}
5db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
6 trả về một đối tượng { : , ..., : }
7 chứa trạng thái của hoạt động. Khi thành công, đối tượng { : , ..., : }
7 chứa thông tin về số lượng tài liệu bị xóa:db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
6 returns a { : , ..., : }
7 object that contains the status of the operation. Upon success, the
{ : , ..., : }
7 object contains information on the number of documents removed:{
"_id" : 1234,
"name" : "Chris"
}
6Mẹo
Xem thêm:
Nếu phương thức
db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
6 gặp phải viết lỗi liên quan, kết quả bao gồm trường db.products.remove[ { qty: { $gt: 20 } } ]
0:db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
6 method encounters write concern errors, the results include the db.products.remove[ { qty: { $gt: 20 } } ]
0 field:{
"_id" : 1234,
"name" : "Chris"
}
7Mẹo
Nếu phương thức
db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
6 gặp phải lỗi không liên quan, kết quả bao gồm trường db.products.remove[ { qty: { $gt: 20 } } ]
2:db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
6 method encounters a non-write concern error, the results include db.products.remove[ { qty: { $gt: 20 } } ]
2 field:{
"_id" : 1234,
"name" : "Chris"
}
8