围绕mongodb的体系结构,包含文档和子文档

本文关键字:文档 包含 mongodb 体系结构 围绕 | 更新日期: 2023-09-27 17:59:41

我有一个管理C#设置的应用程序。所以我有一份文件,看起来像:

{
    ApplicationName: "FooApplication",
    Settings : [
          ConnectionString: "localhost@myserver.com",
          UserName: "Admin"
          Password: "Password"
        ]
    }
}
{
    ApplicationName: "BarApplication",
    Settings : [
          ConnectionString: "localhost@myserver.com",
          UserName: "Admin",
          Password: "Password",
          Special: "aaaaaaaaaaaaaa"
        ]
    }
}

正如你所看到的,我的应用程序FooApplication和BarApplication都使用相同的设置,只是我的BarApplication还有一个特殊的设置:"aaaaaa"。

那天,我的ConnectionString变成NewLocalhost@myserver.com,这是更新每个应用程序文档的ConnectionString字段的好方法吗?事实上,我不知道在我的情况下最好的做法是什么,因为我刚开始使用像mongodb这样的NoSQL解决方案。

第二件事,我想插入一个新的应用程序,我想总是插入一些设置,比如ConnectionString、UserName和Password,因为每个应用程序都是一样的,但我从哪里得到这些常见的设置?使用一个名为GlobalSettings的新集合,我在其中存储常见设置?例如,我是选择applicationName FooApplication,取其公共字段的值,然后将其复制到我要创建的新应用程序SuperApplication中?

任何建议都将不胜感激。

谢谢大家。

围绕mongodb的体系结构,包含文档和子文档

首先,大多数NoSql存储的最佳实践与RDBMS存储类似。

其次,让我们澄清一下术语。

  • 一个集合就是它听起来的样子——一个文档的集合。它类似于一张桌子
  • 文档本质上是集合中的一个记录

你最想要的可能是一个包含一堆设置文档的设置集合,而不是一个包含所有设置的文档。

您应该创建一个包含属性的POCO

public class ApplicationSettings {
    public ObjectId Id {get; set;}
    public string Name {get; set;}
    public Dictionary<string, string> Settings {get; set;}
}

现在,您可以创建一个ApplicationSettings的实例,该实例可以插入到集合中。

您可以通过id(mongo默认情况下已经为其建立了索引)或应用程序名称进行查询。

当你想进行更新时,你可以通过id或名称查询来更新单个文档,也可以一次更新所有文档。

假设你使用的是官方的C#驱动程序,它看起来像这样:

更新单个文档

var query = Query.EQ("_id", someIdHere);
var update = Update.Set("Settings.ConnectionString", "NewLocalhost@myserver.com")
collection.Update(query, update)

(从哪里获得collection实例取决于您。)

查看文档以了解更多信息:http://www.mongodb.org/display/DOCS/CSharp+语言+中心