当前位置: 首页 > news >正文

在C#中使用官方驱动操作MongoDB

MongoDB的官方驱动下载地址:https://github.com/mongodb/mongo-csharp-driver/releases

目前最新的版本是2.10,支持.NET 4.5以上。由于我现在的程序还在.NET4.0上面构建,所以这里使用1.10.1版本。

添加引用

解压下载到的驱动,然后在我们的程序中添加引用:

MongoDB.Bson.dll
MongoDB.Driver.dll

然后在代码中添加Using:

using MongoDB.Bson;
using MongoDB.Driver;

 

创建Client、Server、Database

var connectionString = "mongodb://localhost:27017";
var client = new MongoClient(connectionString);
var server = client.GetServer();
var db = server.GetDatabase("mydb");

connectionString可以从配置文件中获取。

client对象是线程安全的,那么,我们可以把它存到一个全局的变量中。

有了db对象,我们就可以进行访问了。

使用Collection

Collection是文档(document)的集合,可以理解为我们的数据表。而每一个文档就是我们的一行数据。在MongoDB的驱动中,我们有两种方式来使用Collection:

  1. 使用 BsonDocument 模型
  2. 使用自定义的实体模型

如果我们的文档结构比较复杂,或者定义为实体模型比较困难,那么推荐使用BsonDocument模型。

如果我们的文档结构清晰,存储的字段也是固定的,那么推荐使用自定义的实体模型。实体对象的格式如下:

public class Entity
{
    public ObjectId Id { get; set; }
    public string Name { get; set; }
}

我们在获取Collection引用的时候,需要提供一个文档类型:

var collection = db.GetCollection<Entity>("entities");

CURD操作

在有了Collection之后,我们可以写一个CURD的例子:

var collection = db.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);

 

转载于:https://www.cnblogs.com/youring2/p/4894536.html

相关文章:

  • Android 百度推送服务
  • ISG2015
  • Oracle常见SQL语句
  • Python模块Scrapy导入出错:ImportError: cannot import name xmlrpc_client
  • php的lareval框架配置出错
  • 九度OJ 1160:放苹果 (DFS)
  • 58同城技术委员会执行主席沈剑:好的架构是进化来的,不是设计来的
  • php 下载doc文档
  • Sterling B2B Integrator与SAP交互 - 01 简介
  • 若烟火云朵只给你一人
  • Daily Scrumming* 2015.10.29(Day 10)
  • 一个bug
  • java IO存在问题
  • eclipse 弹出智能提示、代码自动换行
  • 从一个Fragment跳转到另一个Fragment
  • 网络传输文件的问题
  • #Java异常处理
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • chrome扩展demo1-小时钟
  • ES6核心特性
  • HTTP中的ETag在移动客户端的应用
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • Markdown 语法简单说明
  • PHP 7 修改了什么呢 -- 2
  • React Native移动开发实战-3-实现页面间的数据传递
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 测试如何在敏捷团队中工作?
  • 程序员该如何有效的找工作?
  • 从输入URL到页面加载发生了什么
  • 基于HAProxy的高性能缓存服务器nuster
  • 理清楚Vue的结构
  • 让你的分享飞起来——极光推出社会化分享组件
  • 如何优雅地使用 Sublime Text
  • 我的zsh配置, 2019最新方案
  • 我感觉这是史上最牛的防sql注入方法类
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 一道面试题引发的“血案”
  • 一天一个设计模式之JS实现——适配器模式
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #Lua:Lua调用C++生成的DLL库
  • (Python) SOAP Web Service (HTTP POST)
  • (pytorch进阶之路)扩散概率模型
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (附源码)计算机毕业设计ssm电影分享网站
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (转)memcache、redis缓存
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • ***测试-HTTP方法
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)