【问题标题】:update inner collection in MongoDB更新 MongoDB 中的内部集合
【发布时间】:2014-02-13 18:10:22
【问题描述】:

我有一个如下所示的文档集合,如果值存在,我需要检查内部集合 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"}]
}

【问题讨论】:

标签: c# linq mongodb


【解决方案1】:

在 C# 中执行此操作的最简单方法是使用 Mongo DB C# 驱动程序 (http://www.nuget.org/packages/mongocsharpdriver/) 中的 BsonDocument

对于集合中的每个文档,您需要先获取“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
  }

【讨论】:

    猜你喜欢
    • 2012-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    • 2011-04-27
    • 1970-01-01
    相关资源
    最近更新 更多