C# 更新MongoDB中的内部集合
我有一个如下所示的文档集合,我需要检查内部集合规则列表(如果值存在),然后更新集合,或者使用mongodb c#将新项插入集合规则列表。我能够通过查询使用objectId更新RuleName和RuleDescC# 更新MongoDB中的内部集合,c#,linq,mongodb,C#,Linq,Mongodb,我有一个如下所示的文档集合,我需要检查内部集合规则列表(如果值存在),然后更新集合,或者使用mongodb c#将新项插入集合规则列表。我能够通过查询使用objectId更新RuleName和RuleDesc { "_id": ObjectId("4fb21439f31dfd122ce39c4a"), "RuleName": "Rule 1", "RuleDesc": "Rule for log" "RulesList":[{ "No" : "1"
{
"_id": ObjectId("4fb21439f31dfd122ce39c4a"),
"RuleName": "Rule 1",
"RuleDesc": "Rule for log"
"RulesList":[{
"No" : "1",
"Name" : "LogRule",
"Field" : "Log"},{
"No" : "2",
"Name" : "IDRule",
"Field" : "IDEntry"}]
}
在C#中,执行此操作的最简单方法是使用官方Mongo DB C#driver()中的BsonDocument类
对于集合中的每个文档,您需要首先将“RulesList”作为bsonarray。在BsonArray上,您可以执行LINQ查询
假设对于上面的文档,您想检查“RuleList”数组中的任何项在“Field”属性中是否有“Log”值
var result = document["RulesList"].AsBsonArray.Any(b => b["Field"].AsString == "Log");
if (result)
{
//do update
}
else
{
//do insert
}
我已经编辑了你的标题。请参阅“”,其中的共识是“不,他们不应该”。