C# “蒙戈投掷”;元素名称';名称';无效';例外
我正在更新一个简单的字段C# “蒙戈投掷”;元素名称';名称';无效';例外,c#,.net,mongodb,mongodb-.net-driver,C#,.net,Mongodb,Mongodb .net Driver,我正在更新一个简单的字段 var filterDocument = new BsonDocument { { "name", "alice" } }; var newDocument = new BsonDocument { { "name", "Alice" } }; collection.UpdateOne(filterDocument, newDocument); 但是当我到达update语句时,我得到一个异常{“元素名'name'无效”。} 元素名有什么问题 更新 重新写入此: v
var filterDocument = new BsonDocument { { "name", "alice" } };
var newDocument = new BsonDocument { { "name", "Alice" } };
collection.UpdateOne(filterDocument, newDocument);
但是当我到达update语句时,我得到一个异常{“元素名'name'无效”。}
元素名有什么问题
更新
重新写入此:
var filterDocument = new BsonDocument { { "x", "alice" } };
var newDocument = new BsonDocument { { "y", "Alice" } };
collection.UpdateOne(filterDocument, newDocument);
抛出异常{“元素名称'y'无效”。}
而且,UpdateOne()
或UpdateMany()
没有区别
而且,从贝壳上看也不错
> db.crud.update({name:'alice'},{name:'Alice'})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
与
update
相反,updateOne
似乎需要一个update操作符
> 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 }
…这意味着您的文档可能看起来像
var newDocument =
new BsonDocument { { "$set", new BsonDocument {"name", "Alice" } } };
…或者,如果您确实想替换整个文档,请使用
replaceOne
,它可以与现有文档一起替换整个匹配文档。。。。是带有过滤器文档
的“无效名称”还是新文档
的“无效名称”?很好!似乎是新文档
。我只是把它改成了x
,得到了同样的异常,但是改成了x
。嗯。。我想说,也许是因为它把“名字”和一些术语混在一起了,但我猜不是。。。尝试将filterDocument
的名称更改为“y”
,然后尝试将其值更改为“Alice”
我确实更改了这两个,一个更改为x
,另一个更改为y
,并且出现了相同的错误?尝试将filterDocument
的值更改为“Alice”
,大写字母“a”
。我试图找出所有可能导致第二个文档产生错误的差异。我想知道是否是这样的。替换v的编辑。我要试一试!