2011-12-27 24 views

Trả lời

112

Hãy thử:

db.collection.update(
    { '<field>': { '$exists': true } }, // Query 
    { '$unset': { '<field>': true } }, // Update 
    false,        // Upsert 
    true         // Multi-update 
) 

nơi field là trường không được hỗ của bạn và collection là bộ sưu tập nó đã bị xóa khỏi.

Lệnh cập nhật chung có dạng db.collection.update(criteria, objNew, upsert, multi). falsetrue đối số dấu ngắt tắt chế độ upsert và cho phép cập nhật nhiều để truy vấn cập nhật tất cả tài liệu trong bộ sưu tập (không chỉ kết quả đầu tiên).

Cập nhật cho MongoDB 2.2+

Bây giờ bạn có thể cung cấp một đối tượng JSON thay vì lập luận vị trí cho upsert và đa.

db.collection.update(
    { '<field>': { '$exists': true } }, // Query 
    { '$unset': { '<field>': true } }, // Update 
    { 'multi': true }     // Options 
) 
+3

Giá trị được chỉ định cho giá trị của trường trong câu lệnh $ unset (tức là 1 ở đây) không ảnh hưởng đến hoạt động. [$ unset operator] (http://docs.mongodb.org/manual/reference/operator/unset/#_S_unset) – Xiao

29

chỉ làm một cái gì đó như thế này

db.people.find().forEach(function(x) { 
    delete x.badField; 
    db.people.save(x); 
}) 

oooh các $unset câu trả lời ai đó đã cho sử dụng update()here là khá tuyệt vời quá.

+0

Thx, Jamund. Cách tiếp cận của bạn cũng hoạt động. –

+0

Không thể chấp nhận 2 câu trả lời. Vì vậy, chỉ cần upvoted nó. –

+0

Cảm ơn, rất tốt! –

Các vấn đề liên quan