2011-02-27 59 views
5

我有以下文件收集称为“服务器”。MongoDB:如何在C#中使用嵌套数组加载集合?

{ 
    name: "West", 
    ip: "123.123.123.123", 
    channels: 
    [ 
     { 
      name: "English", 
      port: "1234", 
      status: "0" 
     }, 
     { 
      name: "Spanish", 
      port: "1235", 
      status: "0" 
     }, 
     { 
      name: "German", 
      port: "1236", 
      status: "0" 
     } 
    ] 
}, 
{ 
    name: "East", 
    ip: "122.122.122.122", 
    channels: 
    [ 
     { 
      name: "English", 
      port: "1234", 
      status: "0" 
     }, 
     { 
      name: "French", 
      port: "1235", 
      status: "0" 
     } 
    ] 
} 

如何从MongoDB中选择使用C#的结构?

回答

7

如果你愿意,你可以使用follwoing代码的所有项目:

var server = MongoServer.Create("mongodb://localhost:27020"); 
var database = server.GetDatabase("someDb"); 

var servers = database.GetCollection<ServerItem>("servers"); 
servers.FindAllAs<ServerItem>(); 

但是如果你想例如用名称=西部的所有文件,比你可以:

collection.FindAs<ServerItem>(Query.EQ("name","west")); 

ServerItem:

public class ServerItem 
{ 
    public string name { get; set; } 

    public string ip { get; set; } 

    public List<Channel> channels { get; set; } 
} 

public class Channel 
{ 
    public string name { get; set; } 

    public int port { get; set; } 

    public int status { get; set; } 
} 
+0

好的,谢谢。这很好。 –

+0

不客气。 –

+0

这也适用于结实的,对吧?不仅是类,而且结构也是如此。 –