2016-02-16 18 views
6

tôi cập nhật một lĩnh vực đơn giản.Mongo ném "tên phần tử 'tên' không hợp lệ' ngoại lệ

var filterDocument = new BsonDocument { { "name", "alice" } }; 

var newDocument = new BsonDocument { { "name", "Alice" } }; 

collection.UpdateOne(filterDocument, newDocument); 

Nhưng khi tôi đạt được tuyên bố bản cập nhật tôi nhận được một ngoại lệ {"Element name 'name' is not valid'."}

Có chuyện gì vậy ? với tên phần tử

cập nhật

Re-viết nó như thế này:

var filterDocument = new BsonDocument { { "x", "alice" } }; 

var newDocument = new BsonDocument { { "y", "Alice" } }; 

collection.UpdateOne(filterDocument, newDocument); 

Ném ngoại lệ {"Element name 'y' is not valid'."}

Ngoài ra, UpdateOne() hoặc UpdateMany() làm cho không có sự khác biệt.

Ngoài ra, từ vỏ thì tốt.

> db.crud.update({name:'alice'},{name:'Alice'}) 
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) 
+0

Lạ ... Tên "không hợp lệ" với 'filterDocument' hoặc' newDocument'? – AustinWBryan

+0

Điểm tốt! Xuất hiện là 'newDocument'. Tôi chỉ thay đổi nó thành 'x' và có cùng ngoại lệ, nhưng thay vào đó là' x'. – BanksySan

+0

Hm .. Tôi sẽ nói, có thể bởi vì nó nhận được ''tên' 'trộn lẫn với một số thuật ngữ, nhưng hãy thử không ... Hãy thử đổi tên' filterDocument' thành '" y "', sau đó thử thay đổi giá trị cho '" Alice "' – AustinWBryan

Trả lời

11

Ngược lại với update, updateOne dường như yêu cầu nhà điều hành cập nhật;

> db.test.updateOne({name:'alice'},{name:'Alice'}) 
2016-02-16T19:04:07.689+0000 E QUERY [thread1] Error: the update operation document must contain atomic operators 

> db.test.updateOne({name:'alice'},{$set: {name:'Alice'}}) 
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 } 

... có nghĩa là tài liệu của bạn có thể trông giống như;

var newDocument = 
    new BsonDocument { { "$set", new BsonDocument {"name", "Alice" } } }; 

... hoặc nếu bạn thực sự có nghĩa là để thay thế toàn bộ tài liệu, sử dụng replaceOne, mà nên làm việc với các tài liệu hiện có của bạn để thay thế toàn bộ tài liệu phù hợp.

+0

Tôi tự hỏi nếu nó là một cái gì đó như thế. Thay thế chỉnh sửa của v. Tôi sẽ cho nó đi! – BanksySan

+0

cool .. thanks: (y) –

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