我有一个如下所示的文档集合,如果值存在,我需要检查内部集合RuleList然后更新集合,或者使用mongodb c#将新项目插入到集合RuleList中。我能够通过objectId查询更新RuleName和RuleDesc。
{
"_id": ObjectId("4fb21439f31dfd122ce39c4a"),
"RuleName": "Rule 1",
"RuleDesc": "Rule for log"
"RulesList":[{
"No" : "1",
"Name" : "LogRule",
"Field" : "Log"},{
"No" : "2",
"Name" : "IDRule",
"Field" : "IDEntry"}]
}
答案 0 :(得分:0)
在C#中执行此操作的最简单方法是使用官方Mongo DB C#驱动程序中的 BsonDocument 类(http://www.nuget.org/packages/mongocsharpdriver/)
对于集合中的每个文档,您需要先使用“RulesList” AsBsonArray 。在BsonArray上,您可以执行LINQ查询。
对于上面的文档,您要检查“RuleList”数组中的任何项是否在“Field”属性中具有“Log”值?
var result = document["RulesList"].AsBsonArray.Any(b => b["Field"].AsString == "Log");
if (result)
{
//do update
}
else
{
//do insert
}