MongoDB与c#(二)简单例子 使用1.7版本驱动
//创建数据库链接
在1.7的版本驱动中这样写是会报 MongoServer方法已过时的
//MongoServer server = MongoDB.Driver.MongoServer.Create(strconn); //带有用户名,密码的如下写法,不带的则直接ip+端口就可以
const string connectionString = "mongodb://city:liyang@192.168.1.211:27017";
//得到一个客户端对象的引用 GetServer()对服务器对象的引用
var Server = new MongoClient(connectionString).GetServer();
//到一个数据库对象的引用
var client = Server.GetDatabase("City");
//对一组对象的引用
var collection = client.GetCollection<citys>("citys"); //插入一个 实体
for (int i = ; i < dt.Rows.Count; i++)
{
collection.Insert(new citys
{
province = dt.Rows[i][].ToString(),
city = dt.Rows[i][].ToString(),
county = dt.Rows[i][].ToString(),
areacode = "" + dt.Rows[i][].ToString(),
postalcode = dt.Rows[i][].ToString()
});
} 以下是git上的帮助文档 地址是:http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-csharp-driver/
将一个引用添加到c#司机dll
右键单击 引用 文件夹在Visual Studio的解决方案 探险家和选择 添加 参考…… 。 导航到文件夹 c#驱动程序dll被安装并添加一个引用以下 dll:
MongoDB.Bson.dll
MongoDB.Driver.dll
作为一种替代方法可以使用 NuGet 包管理器添加c# 驱动程序包来您的解决方案。
添加所需的 使用 语句
作为一个最低需要使用语句如下:
using MongoDB.Bson;
using MongoDB.Driver;
此外,您会经常添加一个或多个使用 声明:
using MongoDB.Driver.Builders;
using MongoDB.Driver.GridFS;
using MongoDB.Driver.Linq;
还有其他名称空间,只会在特殊的需要 用例。
得到一个客户端对象的引用
最简单的方法获得一个客户对象的引用是使用 连接字符串:
var connectionString = "mongodb://localhost";
var client = new MongoClient(connectionString);
如果你想将客户端对象存储在一个全局变量。 MongoClient 是线程安全的。
对服务器对象的引用
要从客户端到服务器对象的引用对象,写 这样的:
var server = client.GetServer();
到一个数据库对象的引用
去到一个数据库对象的引用从服务器对象,写 这样的:
var database = server.GetDatabase("test"); // "test" is the name of the database
如果您使用多个数据库,调用 GetDatabase 再次为每个 您想要使用数据库。
BsonDocument 对象模型与您自己的域类
有两种方法可以处理集合:
使用 BsonDocument 对象模型
使用自己的域类
您将使用 BsonDocument 当数据对象模型 工作是如此的自由形式,它将是困难的或不可能的 定义的域类。
因为它是如此容易使用自己的域类 快速启动将假设你要这样做。 c#驱动程序 提供,他们可以处理您的域类:
有一个无参数的构造函数
定义公共读/写数据的字段或属性 存储在数据库中
这些需求在本质上是相同的。net的实施 XmlSerializer。
此外,如果您的域类将被用作根 文档必须包含一个 ID 字段或属性(通常是命名 ID 尽管你可以覆盖,如果必要)。 通常情况下, ID 将类型的 ObjectId ,但没有限制的类型 的成员。
考虑下面的类定义:
public class Entity
{
public ObjectId Id { get; set; }
public string Name { get; set; }
}
对一组对象的引用
你会得到一个包含引用集合 实体 文件是这样的:
// "entities" is the name of the collection
var collection = database.GetCollection<Entity>("entities");
插入文档
插入一个 实体 :
var entity = new Entity { Name = "Tom" };
collection.Insert(entity);
var id = entity.Id; // Insert will set the Id if necessary (as it was in this example)
找到一个现有的文档
在这个示例中,我们将读回 实体 假设我们知道 ID 值:
var query = Query<Entity>.EQ(e => e.Id, id);
var entity = collection.FindOne(query);
查询<单位> .EQ 使用 查询< T > 构建器类来构建 查询。 lambda表达式 E = > e.Id 是翻译 _ID 。 这是 字段的名称存储在数据库中。
请注意
通常的名称字段在数据库中是完全相同的 正如它的名字域类中的字段或属性,但是 ID 是一个例外,映射到吗 _ID 在数据库中。
其他查询操作符包括: GT , 一种 , 在 , LT , LTE , 附近 , 东北 , 和 , 或 (和其他一些更多 专业的)。
保存一个文档
你可以保存更改现有的文档如下:
entity.Name = "Dick";
collection.Save(entity);
更新现有的文档
另一种选择 保存 是 更新 。 所不同的是, 保存 将整个文档发送回服务器,但是 更新 发的变化。 例如:
var query = Query<Entity>.EQ(e => e.Id, id);
var update = Update<Entity>.Set(e => e.Name, "Harry"); // update modifiers
collection.Update(query, update);
下面的例子使用了 更新< T > 构建器轻松地构建更新 修饰符。
删除一个现有的文档
删除一个现有的文档集合你写:
var query = Query<Entity>.EQ(e => e.Id, id);
collection.Remove(query);
你不需要调用连接或断开连接
c#司机有一个连接池使用连接到服务器 效率。 不需要电话 连接 或 断开 ; 让司机照顾连接(调用 连接 是无害的,但是打电话呢 断开 是不好的,因为它关闭 连接池中的连接)。
完整的示例程序
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MongoDB.Bson;
using MongoDB.Driver;
using MongoDB.Driver.Builders;
namespace ConsoleApplication1
{
public class Entity
{
public ObjectId Id { get; set; }
public string Name { get; set; }
}
class Program
{
static void Main(string[] args)
{
var connectionString = "mongodb://localhost";
var client = new MongoClient(connectionString);
var server = client.GetServer();
var database = server.GetDatabase("test");
var collection = database.GetCollection<Entity>("entities");
var entity = new Entity { Name = "Tom" };
collection.Insert(entity);
var id = entity.Id;
var query = Query<Entity>.EQ(e => e.Id, id);
entity = collection.FindOne(query);
entity.Name = "Dick";
collection.Save(entity);
var update = Update<Entity>.Set(e => e.Name, "Harry");
collection.Update(query, update);
collection.Remove(query);
}
}
}
MongoDB与c#(二)简单例子 使用1.7版本驱动的更多相关文章
- MongoDB学习笔记二- Mongoose
MongoDB学习笔记二 Mongoose Mongoose 简介 之前我们都是通过shell来完成对数据库的各种操作, 在开发中大部分时候我们都需要通过程序来完成对数据库的操作 而Mongoose就 ...
- AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答
一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...
- mysql定时任务简单例子
mysql定时任务简单例子 ? 1 2 3 4 5 6 7 8 9 如果要每30秒执行以下语句: [sql] update userinfo set endtime = now() WHE ...
- 最简单例子图解JVM内存分配和回收
一.简介 JVM采用分代垃圾回收.在JVM的内存空间中把堆空间分为年老代和年轻代.将大量(据说是90%以上)创建了没多久就会消亡的对象存储在年轻代,而年老代中存放生命周期长久的实例对象.年轻代中又被分 ...
- mongodb入门教程二
title: mongodb入门教程二 date: 2016-04-07 10:33:02 tags: --- 上一篇文章说了mongodb最基本的东西,这边博文就在深入一点,说一下mongo的一些高 ...
- [Machine-Learning] 一个线性回归的简单例子
这篇博客中做一个使用最小二乘法实现线性回归的简单例子. 代码来自<图解机器学习> 图3-2,使用MATLAB实现. 代码link 用到的matlab函数 由于以前对MATLAB也不是非常熟 ...
- Hadoop RPC简单例子
jdk中已经提供了一个RPC框架-RMI,但是该PRC框架过于重量级并且可控之处比较少,所以Hadoop RPC实现了自定义的PRC框架. 同其他RPC框架一样,Hadoop RPC分为四个部分: ( ...
- CUDA学习,环境配置和简单例子
根据摩尔定律,每18个月,硬件的速度翻一番.纵使CPU的主频会越来越高,但是其核数受到了极大的限制,目前来说,最多只有8个或者9个核.相比之下,GPU具有很大的优势,他有成千上万个核,能完成大规模的并 ...
- jquery ajax跨域请求后台的简单例子
一.简介AJAX 是与服务器交换数据的技术,它在不重载全部页面的情况下,实现了对部分网页的更新. ajax() 方法通过 HTTP 请求加载远程数据. 该方法是 jQuery 底层 AJAX 实现.简 ...
随机推荐
- Redis是可以安装成windows服务-开机自启 win7 64位
其实Redis是可以安装成windows服务的,开机自启动,命令如下: redis-server --service-install redis.windows.conf 安装完之后,就可看到Redi ...
- JQuery中button提交表单报TypeError: elem[type] is not a function jquery
错误: TypeError: elem[type] is not a function jquery 解决: 出现这种现象的原因是,提交的表单中,有标签的name,有以submit命名的 name中不 ...
- Linux 基础教程 35-软件包管理-YUM
YUM基础 使用RPM在Linux中安装.卸载软件或服务进会经常碰到RPM包的依赖,而我们在安装软件A时,提示依赖于软件B,安装软件B时又会出现提示依赖于软件C等一系列的依赖关系.这时大家会提 ...
- [react002] component基本用法
1 什么是component 设计接口的时候,把通用的设计元素(按钮,表单框,布局组件等)拆成接口良好定义的可复用的组件. 这样,下次开发相同界面程序时就可以写更少的代码,也意义着更高的开发效率,更少 ...
- Centos 安装 erlang 环境
系统 Centos 6.5 64位 Erlang 18.3.4 安装依赖组件 yum install -y gcc gcc-g++ unixODBC unixODBC-devel wxBase wxG ...
- roadflow作为工作流引擎服务中心webapi说明
将RoadFlow作为工作流引擎服务中心,其它第三方系统如OA,ERP等通过调用RoadFlow对外提供的标准WebApi接口来实现流程发送.退回.查询待办事项.已办事项.查看流转审批过程等操作.实现 ...
- cesium编程中级(二)源码编译
cesium编程中级(二)源码编译 有些情况下,比如我们自己从Github下载了最新的代码,或者自己临时修改了一点代码,想要编译后的Build文件夹的内容,需要自行编译源码,这里介绍一下编译的方法 下 ...
- artemplate模板
artTemplate 介绍 最近使用了一款模板,学习成本比较低,性能也不错.觉得很好用,所以推荐给大家. artTemplate 是新一代 javascript 模板引擎,它采用预编译方式让性能有了 ...
- Delphi开发安卓程序的感受
Delphi XE7开发安卓程序,界面开发速度非常快,这是eclipse无法比的,还有就是界面自适应能力很棒,我在不同版本和尺寸的设备中测试,运行良好,这些设备包括:三星I9100(安卓2.3:不到5 ...
- 十二生肖查询网页版制作(php)
今天无聊做了一个十二生肖查询器: 预览网址效果:http://hongxing01.hktd02u.me48.com/03Sxcx 源代码下载:http://down.51cto.com/data/1 ...