我使用10gen C#驱动程序来操作MongoDB,我想删除一个子文档。但我不知道该如何实现。
以下是一个类似于我的文档的示例:
感谢您的帮助。 约翰
以下是一个类似于我的文档的示例:
{
"_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));
感谢您的帮助。 约翰
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);
.请注意,在pull语句中缺少"$"符号。 - Jardalu