我为MongoDB使用10gen C#驱动程序,我想从子文档中删除一个子文档。我不知道怎么做。
以下是我的文档
的示例{
"_id": "binary_stuff",
"Name": "MyApplication",
"Settings": [
{
"_id": "binary_stuff",
"Key": "ImportDirectory",
"Value": "C:\data",
"Overrides": [{
"_id": "binary_stuff",
"Name": "PathDirectory",
"Value": "C:\anotherData"
}]
},
}
我想删除覆盖哪个名称是PathDirectory。这是我写的查询,但它不起作用。我没有错误。
var query = Query.And(Query.EQ("_id", applicationId), Query.EQ("Settings.Key", "ImportDirectory"), Query.EQ("Settings.$.Overrides.Name", "PathDirectory"));
Run(database => database.Applications().Remove(query));
感谢您的帮助。 约翰
答案 0 :(得分:8)
你应该使用$ pull操作从数组中删除项目。
var query = Query.And(Query.EQ("_id", applicationId),
Query.EQ("Settings.Key", "ImportDirectory"));
var update = Update.Pull("Settings.$.Overrides", new BsonDocument(){
{ "Name", "PathDirectory" }
});
database.Applications().Update(query, update);