围绕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中?
任何建议都将不胜感激。
谢谢大家。
首先,大多数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+语言+中心