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.4752 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
44.9K12 Huy hiệu vàng116 Huy hiệu bạc139 Huy hiệu đồng12 gold badges116 silver badges139 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
Trong MongoDB, bạn có thể sử dụng toán tử cập nhật trường
{
"_id" : 1234,
"name" : "Chris"
}
9 để xóa hoàn toàn trường khỏi tài liệu.Toán tử
{
"_id" : 1234,
"name" : "Chris"
}
9 được thiết kế đặc biệt để xóa một trường và giá trị của nó khỏi tài liệu.Thí dụ
Giả sử chúng ta có một bộ sưu tập gọi là
db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
6 với các tài liệu sau:{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 } { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 } { "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 } { "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }
Và giả sử chúng tôi muốn xóa trường
db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
7 [và giá trị tương ứng của nó] khỏi tất cả các tài liệu.Chung ta co thể lam được việc nay:
db.dogs.updateMany[
{ },
{ $unset: { type: "" } }
]
Output:
{ "acknowledged" : true, "matchedCount" : 4, "modifiedCount" : 4 }
Bây giờ, hãy để kiểm tra tài liệu:
Bây giờ, hãy để kiểm tra lại bộ sưu tập:
db.dogs.find[]
Result:
{ "_id" : 1, "name" : "Wag", "weight" : 20 } { "_id" : 2, "name" : "Bark", "weight" : 10 } { "_id" : 6, "name" : "Fetch", "weight" : 17 } { "_id" : 7, "name" : "Jake", "weight" : 30 }
Chúng ta có thể thấy rằng trường
db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
7 đã bị xóa hoàn toàn khỏi mỗi tài liệu.Lưu ý rằng giá trị được chỉ định trong biểu thức
{
"_id" : 1234,
"name" : "Chris"
}
9 [tức là, phạm vi] không ảnh hưởng đến hoạt động.Loại bỏ nhiều trường
Bạn có thể chỉ định nhiều trường để xóa bằng cách tách chúng bằng dấu phẩy.
Thí dụ:
{
"_id" : 1234,
"name" : "Chris"
}
0Output:
{ "acknowledged" : true, "matchedCount" : 4, "modifiedCount" : 4 }
Kiểm tra bộ sưu tập:
db.dogs.find[]
Result:
{
"_id" : 1234,
"name" : "Chris"
}
3Bây giờ chỉ còn lại các trường
db.collection_name.update[{ _id: 1234 }, { $unset : { description : 1} }]
3.Tài liệu nhúng
Bạn có thể sử dụng ký hiệu DOT để loại bỏ các trường khỏi các tài liệu nhúng.
Giả sử chúng ta có một bộ sưu tập gọi là
db.collection_name.updateMany[{}, { $unset : { description : 1} }]
1 với tài liệu sau:{
"_id" : 1234,
"name" : "Chris"
}
4Và giả sử chúng tôi muốn xóa trường
db.collection_name.updateMany[{}, { $unset : { description : 1} }]
2 khỏi tài liệu.Chung ta co thể lam được việc nay:
{
"_id" : 1234,
"name" : "Chris"
}
5Output:
{
"_id" : 1234,
"name" : "Chris"
}
6Bây giờ, hãy để kiểm tra tài liệu:
{
"_id" : 1234,
"name" : "Chris"
}
7Result:
{
"_id" : 1234,
"name" : "Chris"
}
8Trường
db.collection_name.updateMany[{}, { $unset : { description : 1} }]
2 và giá trị của nó [bản thân nó là một tài liệu nhúng] đã bị xóa khỏi tài liệu.