簡體   English   中英

帶有文檔和子文檔的mongodb周圍的體系結構

[英]Architecture around mongodb with document and subdocument

我有一個管理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還有一個特殊的設置:“ aaaaaaa”。

那天,我的ConnectionString成為NewLocalhost@myserver.com,這是對每個Application文檔的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+Language+Center

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM