//创建数据库链接
        在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);
}
}
}


最新文章

  1. Oracle 10g安全加固(审计、监听密码)
  2. java时区问题的一个坑
  3. Android系统自带APP分析——短信app
  4. Ubuntu 安装 Redis
  5. cuffdiff 和 edgeR 对差异表达基因的描述
  6. mongodb 级联操作查询时,关联条件
  7. [topcoder]AvoidRoads
  8. python-urllib2模块
  9. ubuntu14.04安装samba、vpn
  10. Axure快捷键大全
  11. otl库(以前不知道有这个库,并且还可以在Unix下使用)
  12. PE文件简单介绍
  13. spring-线程池(1)
  14. TASKCTL敏捷调度理念的诠释
  15. 织梦在服务器上面安装的时候一直提示data文件没有权限,可我已经写了权限,还是提示
  16. python 枚举Enum
  17. hd1007
  18. java 写 Excel(不生成实体文件,写为流的形式)
  19. JS-基础动画心得
  20. Linux解压.tar .tgz .tar.gz .tar.Z等文件

热门文章

  1. 用shell脚本 计算两个数的加减乘除取余
  2. 好用的下拉第三方——nicespinner
  3. Linux下source文件两种方法
  4. 一起学习《C#高级编程》2--比较对象的相等性
  5. C#计算两个日期之间相差的天数
  6. C# AutoMapper的简单扩展
  7. 利用反射(Reflection)处理对象
  8. 总结常见的违背Rest原则的接口设计做法
  9. JAVA异常的最佳工程学实践探索
  10. Linux 常用命令大放送