MongoDB 之C#实践
官方驱动:https://github.com/mongodb/mongo-csharp-driver/downloads。下载后,还提供了一个酷似msdn的帮助文档。
samus驱动:https://github.com/samus/mongodb-csharp/downloads。
using System;
using System.Collections.Generic;
using System.Linq;
using MongoDB.Driver;
using MongoDB.Bson;
using MongoDB.Driver.Builders; namespace TestMongoDb
{
class Program
{
public static string connectionString = "mongodb://localhost";
//数据库名
private static string databaseName = "TestDb"; static void Main(string[] args)
{
// 添加一条数据
//Users us = new Users() { Age = 123, Name = "TestNameA", Sex = "F" };
//us.Insert(); // 删除一条数据
//IMongoQuery iq = new QueryDocument("name", "TestNameA");
//Users.Remove(iq); //修改一条数据
//IMongoQuery iq = new QueryDocument("name", "TestNameA");
//IMongoUpdate iu = MongoDB.Driver.Builders.Update.Set("sex", "M").Set("age", 100);
//Users.Update(iq, iu); //获取数据列表
//IMongoQuery iq = new QueryDocument("name", "TestNameA");
IMongoQuery iq = Query.And(Query.GTE("age", ), Query.Matches("name", "/^Test/"));//>40
List<Users> userList = Users.Search(iq).ToList(); foreach (Users item in userList)
{
Console.WriteLine(item.Name + " " + item.Sex);
}
} public class Users
{
private static string tableUser = "Users"; public Users() { }
public Users(String name, Int32 age, String sex)
{
Name = name;
Age = age;
Sex = sex;
}
public String Name { get; set; }
public Int32 Age { get; set; }
public String Sex { get; set; }
public Boolean Insert()
{
BsonDocument dom = new BsonDocument {
{ "name", Name },
{ "age", Age },
{"sex",Sex}
};
return MongoHelper.Insert(tableUser, dom);
}
public static IEnumerable<Users> Search(IMongoQuery query)
{
foreach (BsonDocument tmp in MongoHelper.Search(tableUser, query))
yield return new Users(tmp["name"].AsString, tmp["age"].AsInt32, tmp["sex"].AsString);
}
public static Boolean Remove(IMongoQuery query)
{
return MongoHelper.Remove(tableUser, query);
}
public static Boolean Update(IMongoQuery query, IMongoUpdate new_doc)
{
return MongoHelper.Update(tableUser, query, new_doc);
}
}
public static class MongoHelper
{
public static MongoCursor<BsonDocument> Search(String collectionName, IMongoQuery query)
{
//定义Mongo服务
MongoServer server = MongoServer.Create(connectionString);
//获取databaseName对应的数据库,不存在则自动创建
MongoDatabase mongoDatabase = server.GetDatabase(databaseName);
MongoCollection<BsonDocument> collection = mongoDatabase.GetCollection<BsonDocument>(collectionName);
try
{
if (query == null)
return collection.FindAll();
else
return collection.Find(query);
}
finally
{
server.Disconnect();
}
}
/// <summary>
/// 新增
/// </summary>
public static Boolean Insert(String collectionName, BsonDocument document)
{
MongoServer server = MongoServer.Create(connectionString);
MongoDatabase mongoDatabase = server.GetDatabase(databaseName);
MongoCollection<BsonDocument> collection = mongoDatabase.GetCollection<BsonDocument>(collectionName);
try
{
collection.Insert(document);
server.Disconnect();
return true;
}
catch
{
server.Disconnect();
return false;
}
}
/// <summary>
/// 修改
/// </summary>
public static Boolean Update(String collectionName, IMongoQuery query, IMongoUpdate new_doc)
{
MongoServer server = MongoServer.Create(connectionString);
MongoDatabase mongoDatabase = server.GetDatabase(databaseName);
MongoCollection<BsonDocument> collection = mongoDatabase.GetCollection<BsonDocument>(collectionName);
try
{
collection.Update(query, new_doc);
server.Disconnect();
return true;
}
catch
{
server.Disconnect();
return false;
}
}
/// <summary>
/// 移除
/// </summary>
public static Boolean Remove(String collectionName, IMongoQuery query)
{
MongoServer server = MongoServer.Create(connectionString);
MongoDatabase mongoDatabase = server.GetDatabase(databaseName);
MongoCollection<BsonDocument> collection = mongoDatabase.GetCollection<BsonDocument>(collectionName);
try
{
collection.Remove(query);
server.Disconnect();
return true;
}
catch
{
server.Disconnect();
return false;
}
}
}
}
}
MongoDB 之C#实践的更多相关文章
- Mongodb极简实践
MongoDB 极简实践入门 1. 为什么用MongoDB? 传统的计算机应用大多使用关系型数据库来存储数据,比如大家可能熟悉的MySql, Sqlite等等,它的特点是数据以表格(table)的形式 ...
- MongoDB 极简实践入门
原作者StevenSLXie; 原链接(https://github.com/StevenSLXie/Tutorials-for-Web-Developers/blob/master/MongoDB% ...
- MongoDB开发最佳实践
MongoDB开发最佳实践 连接到MongoDB · 关于驱动程序:总是选择与所用之MongoDB相兼容的驱动程序.这可以很容易地从驱动兼容对照表中查到: · 如果使用第三方框架(如Spring Da ...
- java mongodb连接配置实践——生产环境最优
之前百度,google了很多,发现并没有介绍mongodb生产环境如何配置的文章, 当时想参考下都不行, 所以写篇文章,大家可以一块讨论下. 1. MongoClientOptions中的连接池配置: ...
- mongodb连接配置实践
之前百度,google了很多,发现并没有介绍mongodb生产环境如何配置的文章, 当时想参考下都不行, 所以写篇文章,大家可以一块讨论下. 1. MongoClientOptions中的连接池配置: ...
- MongoDB 上手开发实践(入门上手开发这一篇就够了)
前言 MongoDB是一个介于 关系数据库 和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.它支持的数据结构非常松散,是类似 json 的 bson 格式,因此可以存储比较复 ...
- MongoDB最佳安全实践
在前文[15分钟从零开始搭建支持10w+用户的生产环境(二)]中提了一句MongoDB的安全,有小伙伴留心了,在公众号后台问.所以今天专门开个文,写一下关于MongoDB的安全. 一.我的一次Mong ...
- 如何将Log4Net 日志保存到mongodb数据库之实践
log4net的大名早有耳闻,一直没真正用过,这次开发APP项目准备在服务端使用log4net. 日志的数据量较大,频繁的写数据库容易影响系统整体性能,所以独立将日志写到mongodb数据库是不错的选 ...
- 暑假第七周总结(安装MongoDB和Tomcat以及MongoDB进行编程实践)
本周主要对MongoDB和Tomcat进行了安装,两项安装都遇到了一些问题.其中在对MongoDB安装过程中出现了什么没有秘钥安全证书的,最终找了一堆教程重复了好多遍之后安装成功,虽然在启动和关闭的时 ...
随机推荐
- 如何用hypermesh生成包含interface的流体网格
在计算气动声学的时候,有些情况是需要我们提取流体计算的结果作为声学分析的边界条件,但是,有些流体网格因为物理模型的问题需要我们设定interface,恰恰你是机械,对流体了解一点,又不想花费太多时间来 ...
- 【算法杂谈】Miller-Rabin素性测试算法
额,我们今天来讲一讲Miller-Rabin素性测试算法. 读者:怎么又是随机算法!!!(⊙o⊙)… [好了,言归正传] [费马小定理] 费马小定理只是个必要条件,符合费马小定理而非素数的数叫做Car ...
- 餐厅点餐系统app总结
总结: 三个冲刺已经结束,虽然没有说十分完美,但该实现的功能还是实现了,只是在市场是相较于专业性的缺乏竞争力,从界面到体验都需进一步优化. 每个人的进度不一样,为了同一个任务需要不断的磨合与合作,但慢 ...
- css3之3D魔方动画(小白版)
在这里分享一下3D魔方动画,html5+CSS3即可完成~无图无真相,先上效果图 第一步非常简单,就是先将魔方的结构画出来.大家都玩过魔方,知道魔方是一个有六个面的正方体.这里我们先写一个大的di ...
- 前端性能优化--为什么DOM操作慢?
作为一个前端,不能不考虑性能问题.对于大多数前端来说,性能优化的方法可能包括以下这些: 减少HTTP请求(合并css.js,雪碧图/base64图片) 压缩(css.js.图片皆可压缩) 样式表放头部 ...
- 创建WP8试用应用
参考资料: 创建 Windows Phone 的试用应用 如何在 Windows Phone 应用中实现试用体验 Windows Phone 7 开发 31 日谈——第23日:提供试用版应用程序 对资 ...
- browser-sync
引入 大家写网页的时候,肯定都遇到这种情况,每次用sublime写完都要返回浏览器,刷新页面,而这个工具正好解决了这个问题,提高前端开发效率,这是一个npm的包 browser-sync browse ...
- SPRING SECURITY JAVA配置:Web Security
在前一篇,我已经介绍了Spring Security Java配置,也概括的介绍了一下这个项目方方面面.在这篇文章中,我们来看一看一个简单的基于web security配置的例子.之后我们再来作更多的 ...
- oracle 字符串分割
); create or replace function strsplit2(p_value varchar2, p_split varchar2 := ',') return str_split ...
- 关于UIScrollerView的基本用法和代理
- (void)viewDidLoad { [super viewDidLoad]; scrollView = [[UIScrollView alloc] initWithFrame:CGRectM ...