MongoDB的第一次亲密接触
by 麦子君子兰
at 2010-09-30 16:01:00
original http://www.cnblogs.com/mad/archive/2010/09/30/1839568.html
作者: 麦子|君子兰 发表于 2010-09-30 16:01 原文链接 阅读: 745 评论: 1
我们.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。
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 ;
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 );
Console.WriteLine( string.Format( "Document Count After Deleting Elmer Fudd: [ {0} ]", orders.Count() ) );
// Delete all docs.
orders.Delete( new Document() );
如果向像SqlServer那样查看数据库的数据,目前也有很多客户端支持,MongoVUE不错,我用过。我想大家可以试着自己写哥客户端:)
在设计实体类时,字段也不能用于偏僻的类型,比如XElement,在读的时候Mongodb-csharp反序列化会抛出异常,所以建议使用string来代替。如果不爱使用document,喜欢linq查询,存储的时候如果某个集合存储某个类型的各种子类,在GetCollection<T>的时候也不能完成正确子类的反序列化,这些问题大家在使用的过程中会慢慢发现,也可以邮件订阅Mongodb-csharp的google group(发送空邮件到mongodb-csharp@googlegroups.com)。
后面我会使用MongoDB来开发一个系统,同时会牵扯到MongoDB的使用讲解。敬请关注。十一下班咯~~~祝大家国庆快乐。
最新新闻:
· 分析称谷歌新图像格式WebP前景难预测(2010-10-01 20:05)
· 分析师称Facebook CEO成功抵御《社交网络》(2010-10-01 20:00)
· 张朝阳力挺360保护用户隐私 称腾讯垄断需制衡(2010-10-01 19:55)
· 意大利科学家称可能已经观察到“霍金辐射”(2010-10-01 19:53)
· 微软宣布IE9 beta发布两周下载600万次(2010-10-01 19:49)
编辑推荐:软件编程21法则