2013-08-29 54 views

Trả lời

1

Bạn có thể làm:

var deleteresult = {}; 
deleteresult["result150160"] = true 
Box.update({_id: this._id} , {$unset: deleteresult }); 

Về cơ bản, bạn phải sử dụng cặp giá trị khóa, không quan trọng bạn sử dụng gì cho true, miễn là theres một cái gì đó ở đó.

+0

Điều đó không làm việc và tôi không muốn chuỗi trong truy vấn, vì result150160 là một ví dụ và cũng có thể là một chuỗi khác :) – Sebastian

+0

Tôi đã sửa đổi một chút cú pháp, bạn có thể sử dụng bất kỳ chuỗi nào tại chỗ. Ngoài ra, hãy kiểm tra bảng điều khiển javascript của bạn vì nó cũng có thể là một thứ khác khiến nó không hoạt động (quyền '.allow' hoặc không có' _id' trong đúng) – Akshat

12

Cú pháp đúng là thế này:

Box.update({_id: this._id} , {$unset: { deleteresult : "" } }); 

Bạn phải chỉ định một giá trị cho hoạt động $unset: { deleteresult : "" }. Ngay cả khi nó trống.

Thanh toán các relevant docs:

db.collection.update({ field: value1 }, { $unset: { field1: "" } });
Ví dụ trên xóa field1 trong bộ sưu tập từ các tài liệu trong đó lĩnh vực có giá trị của value1. Giá trị của trường trong câu lệnh $ unset (tức là "" ở trên) không ảnh hưởng đến hoạt động.

+0

Tôi đã thử nghiệm cú pháp của bạn vài phút trước, nhưng nó không làm được ' t làm việc quá – Sebastian

+0

Đây là cú pháp đúng để sử dụng - bạn có thể thấy điều đó từ liên kết đến tài liệu tôi đã đưa vào. Bạn có chắc chắn các vấn đề không nằm ở đâu đó trong mã của bạn không? Liệu 'Box' có thực sự đề cập đến một bộ sưu tập không? Thuộc tính '_id' có đúng không? – Lix

+0

@sebastian bạn đã thử chạy lệnh trong bảng điều khiển meteor mongo chưa. nếu nó hoạt động, thì đó là mã bị hỏng. – booyaa

1

Hãy thử điều này nó sẽ làm việc cho bạn:

var deleteresult = "result150160";  
var updateQuery={$unset:{}}; 
updateQuery.$unset[deleteresult]=1; 
Box.update({_id: this._id} ,updateQuery,false,true);