C#中使用1.7版本驱动操作MongoDB简单例子

 更新时间:2015年01月05日 08:57:30   投稿:junjie  
这篇文章主要介绍了C#中使用1.7版本驱动操作MongoDB简单例子,本文给出了连接MongoDB、操作MongoDB数据等例子,需要的朋友可以参考下

复制代码 代码如下:

//创建数据库链接
//在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 = 0; i < dt.Rows.Count; i++)
{
    collection.Insert(new citys
    {
        province = dt.Rows[i][0].ToString(),
        city = dt.Rows[i][1].ToString(),
        county = dt.Rows[i][2].ToString(),
        areacode = "0" + dt.Rows[i][3].ToString(),
        postalcode = dt.Rows[i][3].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);
        }
    }
}

相关文章

  • C#Js时间格式化问题简单实例

    C#Js时间格式化问题简单实例

    这篇文章介绍了C#Js时间格式化问题简单实例,有需要的朋友可以参考一下
    2013-10-10
  • C#跨平台开发之使用C/C++生成的动态链接库

    C#跨平台开发之使用C/C++生成的动态链接库

    这篇文章介绍了C#跨平台开发之使用C/C++生成的动态链接库,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-01-01
  • C#标识符的使用小结

    C#标识符的使用小结

    C#标识符还是比较常见的东西,这里我们主要介绍C#标识符中的用法,包括介绍 static 的方法和bool 的形参等方面
    2014-01-01
  • C# lock线程锁的用法

    C# lock线程锁的用法

    在C#中,锁lock是一种同步机制,允许在同一时间只允许一个线程访问指定的代码或区域,本文主要介绍了C# lock线程锁的用法,具有一定的参考价值,感兴趣的可以了解一下
    2023-11-11
  • C#单线程和多线程端口扫描器详解

    C#单线程和多线程端口扫描器详解

    这篇文章主要为大家详细介绍了C#单线程和多线程端口扫描器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • 关于C# dynamic装箱问题

    关于C# dynamic装箱问题

    装箱是将值类型转换为类型对象或此值类型实现的任何接口类型的过程,装箱和拆箱的概念是 C# 类型系统统一视图的基础,其中任何类型的值都可以视为对象,这篇文章主要介绍了关于C# dynamic装箱引发的思考,需要的朋友可以参考下
    2022-05-05
  • C#使用OpenCV剪切图像中的圆形和矩形的示例代码

    C#使用OpenCV剪切图像中的圆形和矩形的示例代码

    这篇文章主要介绍了C#使用OpenCV剪切图像中的圆形和矩形,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • c# 图片加密解密的实例代码

    c# 图片加密解密的实例代码

    这篇文章介绍了c# 图片加密解密的实例代码,有需要的朋友可以参考一下
    2013-08-08
  • C#字符串String及字符Char的相关方法

    C#字符串String及字符Char的相关方法

    这篇文章介绍了C#字符串String及字符Char的相关方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • 精简高效的C#网站优化经验技巧总结

    精简高效的C#网站优化经验技巧总结

    这篇文章主要为大家介绍了精简高效的C#网站优化经验技巧,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04

最新评论