草案版本(日期为2010-09-30) 该文件是一个草案版本。虽然我们认为这里提供的信息是非常准确的,它是可能的,它可能会改变未成年人的方式,因为我们吸收用户的反馈意见,并继续执行 c#驱动程序。 1.概述 本教程是10gen支持c#驱动程序mongodb的介绍。假定
草案版本(日期为2010-09-30)
该文件是一个草案版本。虽然我们认为这里提供的信息是非常准确的,香港虚拟主机,它是可能的,它可能会改变未成年人的方式,因为我们吸收用户的反馈意见,并继续执行 c#驱动程序。
1.概述本教程是10gen支持c#驱动程序mongodb的介绍。假定您熟悉使用mongodb,因此主要集中在如何使用c#访问mongodb的。 它分为两个部分:c# 驱动程序 ,bson图书馆。c#驱动程序是建立在顶部,其目的是单独使用的c#驱动程序的的bson图书馆,。
在第1部分中,我们将介绍c#驱动程序的主类:mongoserver,mongodatabase,mongocollection,mongocursor,mongogridfs,mongogridfsfileinfo和safemode。
在第2部分,我们将讨论的主要类的bson library的:bsontype,bsonvalue(及其子类),bsonelement,bsondocument和bsonarray。
第1部分:c#驱动程序本教程的第1部分组织自顶向下的方式,所以你有时可能提前偷看,如果事情是没有意义。您甚至可能想要读第2,如果你是完全陌生的的bson概念,如文档和元素与前第1部分。
参考文献和命名空间为了从你的程序中使用c#的驱动程序,您必须添加以下两个dll文件:
mongodb.bsonlibrary.dllmongodb.csharpdriver.dll您还应该添加以下语句到你的源文件:
using mongodb.bsonlibrary;
using mongodb.csharpdriver;
除了 极少数例外,你将要使用的类的名称前缀与任何“bson”的,如果他们的bsonlibrary或“mongo”的一部分,如果他们的c#驱动程序的一部分 。这样做是为了获得名称冲突的可能性降至最低,当您添加到你的程序的两个使用语句。预计将方法的参数(主要是枚举和标志)的一些类,具有较短的名称,不使用任何前缀。
我们喜欢使用c#的var语句声明 的变量,因为它会导致更短,我们的感觉,更可读的代码。visual studio可以很容易地看到一个变量的类型 ,如果您需要通过将鼠标指针悬停在变量 或使用intellisense。然而,当阅读本文档,你没有这个能力,所以在这个文件中,而不是写:
var server = mongoserver.create(connectionstring);
var test = server[“test”];
var books = test[“books”];
按照我们的建议,我们会来写:
mongoserver server = mongoserver.create(connectionstring);
mongodatabase test = server[“test”];
mongocollection books = test[“books”];
所以,你可以看到什么类型正在使用。
线程安全只有少数的c#驱动程序 类是线程安全的。其中:mongoserver的,mongodatabase,mongocollection mongogridfs。通用类,你会使用很多是不是线程安全包括mongocursor的所有类的bsonlibrary(除bsonsymboltable)的。a类不是线程安全的,除非特别记载是线程安全的。
所有的所有类的静态属性和方法是线程安全的。
mongoserver类这个类服务 s的工作与mongodb的根对象。这个类的一个实例的客户端是一个mongodb服务器,你想沟通。虽然这个类有公共的构造函数,推荐的方式来获得这个类的一个实例是使用工厂方法。
每个实例mongoserver保持与服务器的连接池。这些连接之间共享所有的呼叫到服务器。你可能要调用构造函数,而不是直接调用创建工厂方法mongoserver的几个原因之一是,如果你要保持一个单独的连接池的一些操作。
这个类的实例是线程安全的。
连接字符串最简单的方法是使用一个连接字符串连接到mongodb的。标准 mongodb的连接字符串的格式是一个以下列格式的url:
mongodb://[username:password@]hostname[:port][/database]
如果您使用的是mongodb服务器的身份验证的用户名和密码,只应。这些凭据将适用于一个单一的数据库,如果数据库名称是存在的,否则他们将所有的数据库的默认凭据。要进行身份验证对管理数据库追加“(管理)”的用户名的。
端口号是可选的,默认为27017。
如果数据库名是存在的,那么这个连接字符串,也可以与创建方法mongodatabase的使用。创建方法mongoserver忽略的数据库名称(如果存在)(以外的凭据,以确定是否适用于一个单一的数据库或所有数据库的默认凭据)。
要连接到一个副本设置指定的种子提供多个以逗号分隔的主机名列表。例如:
mongodb://server1,server2:27017,server2:27018
该连接字符串指定的种子名单,由三个服务器(其中两个是在同一台机器上,但在不同的端口号)。
c#驱动程序 能够连接到副本集,即使种子名单是不完整的。它会发现在主服务器即使主只要不是种子列表中的种子列表上的至少一个次级服务器响应(响应将包含完整副本集和当前的主的名称)。
工厂方法最好的方式得到的一个实例mongoserver是,使用create工厂方法。使用相同的连接字符串时,此方法将返回相同的实例mongoserver,所以你不必担心一大堆的情况下,如果你调用create不止一次。此外,如果你只使用一个数据库时,你可能会发现它更容易跳过调用此方法,并呼吁建立 工厂方法mongodatabase。
要连接到mongodb的本地,你会写这样的代码:
string connectionstring = “mongodb://localhost”;
mongoserver server = mongoserver.create(connectionstring);
或许......
mongoserver server = mongoserver.create();
因为连接到本地主机是默认的。