|
园子里已经有不少朋友发过MongoDB的帖子,但是都比较高端,我在这里就写下比较基础的应用,算是MongoDB的第一次接触有所了解。呵呵。我们去Mongodb.org看一看。首页赫然写着 The Best Features of Document Databases,Key-Value Stores,and RDBMSes。意思是最牛逼的文档数据库,键值对的存储并且是RDBMS(relational database management system关系型数据库管理系统)。下面解释说MongoDB缩小了KV存储和传统RDBMS的差距。
Document-oriented storage
Json格式的文档存储。用过ajax的朋友都知道Json长啥样{"key","value"}
Full Index Support
和数据库一样,MongoDB也支持索引。
Replication & High Availability
MongoDB也良好的支持多台Server之间的数据同步,保证一个挂掉还能继续干活。
Auto-Sharding
自动发现Server,负载均衡,避免单点故障。
Querying
丰富的基于document的查询。后面我们会举例介绍。
Fast In-Place Updates
会根据不同的情况进行数据更新
Map/Reduce
灵活的聚集和数据处理。
GridFS
GirdFS是MongoDB的大文件存储系统,比如图片、音频、视频。
呵呵,心动不如行动,我们可以试试他的Try It Out,进行命令行的操作。当然,这不是C#。
下载MongoDB,自己使用版本无所谓,服务器使用如果处理大文件,就要用64bit的,因为32的只能处理<2G的文件。 关于安装,很多朋友的博文都有介绍,搜索一下就可以了,都是图文并茂的。但是有一点我要提醒下,就是关于安装成Windows 服务,是有点问题的,起码Windows 7是这样,我们首先要建立一个log.txt,然后使用--logpath ="/"d:/mongodb/log.txt""--install来进行安装,然后去注册表把此服务的值改成--dbpath="/"d:/mongodb/db/""--service。因为很多人的介绍不是用--install,这样我是安装不成功的。
C#客户端
我们.NET自然要去使用C#来和MongoD服务进行通信,幸好有社区的好心人写了MongoDB的.NET Driver 。有三种,Mongodb-csharp、Simple-cshapr和NoRM(http://www.mongodb.org/display/DOCS/C+Sharp+Language+Center )。我就使用Mongodb-csharp(http://github.com/samus/mongodb-csharp),因为他支持Document和Linq两种方式。如果担心Linq的性能问题可以使用document。 引用Mongodb-csharp的dll,我们就可以操作MongoDB了。下面是别人写的简单的使用方法:
var mongo = new Mongo();mongo.Connect();// 打开myorders数据库.Database db = mongo.GetDatabase( "myorders" );// 获取orders 集合.IMongoCollection orders = db.GetCollection( "orders" );//插入文档 var order = new Document(); order["OrderAmount"] = 57.22; order["CustomerName"] = "Elmer Fudd"; // Add the new order to the mongo orders colleciton. orders.Insert( order );//插入多个文档 // Create new orders. var order1 = new Document(); order1["OrderAmount"] = 100.23; order1["CustomerName"] = "Bugs Bunny"; var order2 = new Document(); order2["OrderAmount"] = 0.01; order2["CustomerName"] = "Daffy Duck"; IEnumerable< Document > orderList = new List< Document > {order1, order2}; // Insert an IEnumerable. orders.Insert( orderList );//更新 var selector = new Document {{"CustomerName", "Daffy Duck"}}; Document docToUpdate = orders.FindOne( selector ); Console.WriteLine( "Before Update: " + docToUpdate ); // I'm in the money! docToUpdate["OrderAmount"] = 1000000.00; // Update Daffy's account before Hasaan finds him. orders.Update( docToUpdate );//查找 // Create a specification to query the orders collection. var spec = new Document(); spec["CustomerName"] = "Elmer Fudd"; // Run the query. Document result = orders.FindOne( spec )//linq 查找 // Query the orders collection. IQueryable<Document> results = from doc in orders.AsQueryable() where doc.Key("CustomerName") == "Elmer Fudd" select doc; Document result = results.FirstOrDefault();//删除 // Delete documents matching a criteria. orders.Delete( new Document {{"CustomerName", "Elmer Fudd"}} ); Console.WriteLine( string.Format( "Document Count After Deleting Elmer Fudd: [ {0} ]", orders.Count() ) ); // Delete all docs. orders.Delete( new Document() );
it知识库:MongoDB的第一次亲密接触,转载需保留来源!
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。