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安装过程中出现了什么没有秘钥安全证书的,最终找了一堆教程重复了好多遍之后安装成功,虽然在启动和关闭的时 ...
随机推荐
- iOS应用九宫格算法
1.框框横向间隔为:( "界面的总宽度"-"界面每行的控件的宽度" * "每行要现实的列数(这里是3)") / ("列数 + ...
- 打包如何打包额外文件,比如Sqlite数据库的db文件
http://aigo.iteye.com/blog/2278224 Project Settings -> packaging -> Packaging选项中,有多个设置项来设置打包时要 ...
- iis下搭建通过phpstudy集成的环境,phpmyadmin导入数据库无法应解决办法
本人非常喜欢phpstudy的集成php+mysql环境,一键搞定,但是不知道为什么搭建的phpmyadmin的数据库管理器,无法上传,点击无反应 发现上传数据的界面有点不同 正常情况下是这样的: 非 ...
- python列表副本
a=[1,2,3] b=[4,5,6] a=a+b #创建含a和b的副本的新列表 a [1, 2, 3, 4, 5, 6] b [4, 5, 6] c=a+b #创建含a和b的副本的新列表c [1, ...
- 前端小知识~~关于css3新增知识~~归纳总结
1.新增选择器 E:nth-last-child(n) E:nth-of-type(n) E:nth-last-of-type(n) E:last-child E:first-of-type E:on ...
- 格式化input输入内容(金额)
项目中要用到格式化金额输入框,要求每三个数字用逗号分割开. 添加一个directive angular.module('myApp.directives', []) .directive('filte ...
- Android :fragment介绍
一.关于Fragmemt 1.Fragment(片段),主要是为了支持更多的动态和灵活的用户界面设计,如平板电脑.Fragment允许组合和交换用户界面组件,而不需要更改视图层次结构.通过把Activ ...
- Python之路【第七篇】python基础 之socket网络编程
本篇文章大部分借鉴 http://www.cnblogs.com/nulige/p/6235531.html python socket 网络编程 一.服务端和客户端 BS架构 (腾讯通软件:ser ...
- bootstrap按钮样式
<a class='btn' href='javascript:;'>常规按钮</a> <a class='btn btn-small' href='javascript ...
- tableViewCell嵌套collectionView,动态高度
方法有很多,有通过内容高度,经过代理回调,刷新的,甚至还有计算cell个数,然后根据cell大小计算的,这里推荐iOS 8新特性,通过AutoLayout,利用内容将cell撑起来; 关键代码: vi ...