2012-05-30 67 views
3

有關如何使用.net對象表示以下內容的任何想法?使用C#驅動程序的MongoDB模式設計?

{ 
    _id: ’T4Y...AC’, // base64-encoded ObjectId 
    name: ’Rick’, 
    profile: { ... age, location, interests, etc. ... }, 
    followers: { 
    "T4Y...AD": { name: ’Jared’, circles: [ ’python’, ’authors’] }, 
    "T4Y...AF": { name: ’Bernie’, circles: [ ’python’ ] }, 
    "T4Y...AI": { name: ’Meghan’, circles: [ ’python’, ’speakers’ ] } 
    } 
} 
+0

2 upvotes的究竟是什麼? –

+0

如果Mongo的「介紹」文件稍微好一些,人們不必這樣問。 http://www.mongodb.org/display/DOCS/CSharp+Driver+Tutorial在自動序列化方面相當缺乏。 – JayC

+0

是的,*我知道*,MongoDB主要使用JSON作爲向數據庫顯示數據和將數據存儲到數據庫的方式,並且該文檔似乎給出了MongoDB基本類型的很好的示例,但通常我並不使用JSON從頭開始。 – JayC

回答

1

我會想象它可能看起來像

[DataContract] 
public class data 
{ 
    [BsonId] 
    [DataMember(Order = 0] 
    public BsonObjectId { get; set; } 

    [DataMember(Order = 1] 
    public string name { get; set; } 

    [DataMember(Order = 2] 
    public Profile profile { get; set; } 

    [DataMember(Order = 3] 
    public Dictionary<string,Follower> followers { get; set;} 
} 

[DataContract] 
public class Profile 
{ 
    [DataMember(Order = 0] 
    public int age { get; set; } 
    [DataMember(Order = 1] 
    public string location { get ;set; } 
    [DataMember(Order = 2] 
    public string interests { get ;set; } 
} 

[DataContract] 
public class Follower 
{ 

    [DataMember(Order = 0] 
    public string name { get; set; } 
    [DataMember(Order = 1] 
    public string[] circles 
} 

相信無論是蒙戈和WCF支持字典所以是的,你可以改變追隨者的字典

+0

我認爲「追隨者」實際上轉換爲字典類型,但看到這顯然是使用WCF「可序列化」符號,我不知道如何轉換我的頭頂。上次我嘗試處理WCF中的字典時,它有點不可思議,儘管可行。 – JayC

+0

您可能想要編輯您的問題以包括其與WCF的合作。我將更新我的答案 – SCB

+1

所有的DataContract類可以消失,並且DataMembers可以變成BsonElement() - >如果要更改元素的名稱,可以將其包含在BsonElement屬性的ctor中。 –