mongodb学习(翻译1)
学习mongodb,试着翻译写,英语能力有限,希望大家指正,不顺畅地方大家担待,会后续翻译后面内容;
开始认识C#驱动(官方)
简介
本介绍提供了足够的信息,让你开始使用C#的驱动程序。起步之后,你可以参考文档的其余部分,了解更多信息。
下载C#驱动
最简单的下载C#官方驱动的方式是通过Nuget,(当前version:1.8.2)
你也可以在此地址下载该驱动
https://github.com/mongodb/mongo-csharp-driver/releases
如果是下载的是.zip文件,只要简单的解压并放在任何一个位置即可,如果下载的是.msi文件,点击即可运行安装,该程序会把所有dlls安装到C:\ProgramFiles (x86)\MongoDB\CSharp Driver 1.x
具体的路径根据你的系统而定
添加dll引用
右键点击添加引用找到相应的dll添加到解决方案中,你需要添加以下dll的引用:
- MongoDB.Bson.dll
- MongoDB.Driver.dll
当然,你可以直接用NuGet直接添加C#驱动dll到你的解决方案中。
引入命名空间
至少你要引入以下命名空间
using MongoDB.Bson;
using MongoDB.Driver;
另外,你可能会经常引入下面一个或者多个命名空间
using MongoDB.Driver.Builders;
using MongoDB.Driver.GridFS;
using MongoDB.Driver.Linq;
在其他特殊的一些情况下,会要引入另外的一些命名空间
获取Client Object对象引用
最简单的获取client object引用的方式是通过国一个连接字符串
String connectionString = "mongodb://localhost";
MongoClient client = new MongoClient(connectionString);
你可以存储client object 在一个全局变量中,MongoClient是线程安全的。
获取Server Object对象引用
Server object对象通过client object对象来创建::
MongoServer server = client.GetServer();
获取数据库对象引用
通过server object对象获取数据库对象引用
var database = server.GetDatabase("test"); // test为adb名称
如果你使用的不值一个数据库,你可以通过GetDatabase获取任何一个数据库对象的引用
BsonDocument 对象模式vs自定义实体模式
有两种让你可以创建document方式:
- 使用 BsonDocument 对象
- 使用自定义的实体对象
如果数据很难或者很散很难定义成相关实体,你可以通过BsonDocument来操作。
由于使用自定义类比较方便,这个教程中将要使用这种方式,C#驱动程序可以让使用你提供了一下内容的自定义类
1.具有无参的构造函数
2.定义了可读写的属性
这些要求和.NET’s XmlSerializer.所要求的一样
另外,如果你的自定义类作为根文档,它必须包含一个id字段或者一个id属性,(但是需要时你可以重写他),一般id类型为ObjectId,但并未对其类型进行强制约束
请看下面类实体定义:
public class Entity
{
public ObjectId Id { get; set; } public string Name { get; set; } }
获取集合对象引用
你可以通过如下方式获取集合对象
// "entities" 为集合名称
var collection = database.GetCollection<Entity>("entities");
插入文档对象
插入一个实体对象:
var entity = new Entity { Name = "Tom" };
collection.Insert(entity);
var id = entity.Id; // insert时候会对id进行赋值
查询文档对象
在这个例子中假设知道id的值,我们将读取这个实体对象的值
var query = Query<Entity>.EQ(e => e.Id, id); var entity = collection.FindOne(query);
Query<Entity>.EQ 使用Query泛型类创建query对象,lambda表达式e => e.Id 指向到我们集合中定义的字段
说明:
一般说来,数据库中字段是和自定义实体中字段完全一样的,但是id是一个例外,他会映射到数据库中_id字段
其他查询操作
包括: GT, 大于
GTE,大于等于
In, LT, LTE, Near, NE, And, Or还有一些其他的
保存文档对象
你可以像这样保存一个文档:
entity.Name = "Dick"; collection.Save(entity);
更新文档对象
保存的另一个方式就是更新,不同之处在于保存会发送整个对象到服务器,更新只会发送对象改变的部分,例如:
var query = Query<Entity>.EQ(e => e.Id, id); var update = Update<Entity>.Set(e => e.Name, "Harry"); //更新 collection.Update(query, update);
通过update方法方便的进行更新操作
移除文档对象
你可以通过下面的方式移除文档对象
var query = Query<Entity>.EQ(e => e.Id, id); collection.Remove(query);
你无需调用Connect 或者Disconnect
C#的驱动程序都有一个连接池,有效地使用连接到服务器。所以无需调用Connect 或者Disconnect;只要交给驱动处理即可(调用Connect 没什么影响,但是调用Disconnect 会关掉连接池所有连接)
完整实例
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学习(翻译1)的更多相关文章
- MongoDB学习3
MongoDB学习(翻译3) 支持的where字句(比较多,今天先写一部分) 本节介绍支持的where字句 正如前面提到的,不是所有的C#表达式都支持where子句.您可以以此文为指导,或者你可以 ...
- MongoDB学习2
MongoDB学习(翻译2) C#驱动之LINQ教程 介绍 本教程涵盖了1.8发布版本对linq查询的支持. 开始本教程之前,你应该至少阅读下C#驱动教程关于C#驱动的介绍 快速开始 首先,添加下面命 ...
- MongoDB学习笔记二- Mongoose
MongoDB学习笔记二 Mongoose Mongoose 简介 之前我们都是通过shell来完成对数据库的各种操作, 在开发中大部分时候我们都需要通过程序来完成对数据库的操作 而Mongoose就 ...
- MongoDB学习笔记系列
回到占占推荐博客索引 该来的总会来的,Ef,Redis,MVC甚至Sqlserver都有了自己的系列,MongoDB没有理由不去整理一下,这个系列都是平时在项目开发时总结出来的,希望可以为各位一些帮助 ...
- MongoDB学习笔记—Linux下搭建MongoDB环境
1.MongoDB简单说明 a MongoDB是由C++语言编写的一个基于分布式文件存储的开源数据库系统,它的目的在于为WEB应用提供可扩展的高性能数据存储解决方案. b MongoDB是一个介于关系 ...
- Mongodb学习笔记一(Mongodb环境配置)
Mongodb学习 说明: MongoDB由databases组成,database由collections组成,collection由documents组成,document由fileds组成.Mo ...
- MongoDB学习记录
一.操作符 "$lt" :"<""$lte" :"<=""$gt" :"> ...
- PHP操作MongoDB学习笔记
<?php/*** PHP操作MongoDB学习笔记*///*************************//** 连接MongoDB数据库 **////*************** ...
- MongoDB学习:(二)MongoDB简单使用
MongoDB学习:(二)MongoDB简单使用 MongoDB使用: 执行mongodb的操作之前,我们需要运行命令,来进入操作命令界面 >mongo 提示该错误,说明我们系统缺少一个补丁,该 ...
- MongoDB学习:(一)MongoDB安装
MongoDB学习:(一)MongoDB安装 MongoDB介绍: 直接百科了: MongoDB安装: 1:下载安装: MongoDB安装:https://www.mongodb.com/do ...
随机推荐
- oracle_自动备份用户数据,删除N天前的旧数据(非rman,bat+vbs)
有时数据没有实时备份恢复那么高的安全性需求,但每天 ,或者定期备份表结构 和数据依旧是很有必要的,介绍一种方法 在归档和非归档模式均可使用的自动备份方法. 预期效果是备份用户下的数据含表结构,备份文件 ...
- JavaScript & XML
原文:JavaScript & XML 检测浏览器能力特性 //检测浏览器是否支持DOM2级XML var hasXmlDom = document.implementation.hasFea ...
- 它们的定义app.config中间section节点和在执行中使用
如果现在我们需要在app.config一个节点的在下面的例子中,定义,我们需要如何进行操作? <configSections> <section name="integra ...
- ArcGIS Runtime SDKs v10.2.4最新(Android、iOS、OSX和.NET)
ArcGIS Runtime SDKs v10.2.4最新,它包含:Android.iOS.OS X和.NET四大平台,用户和开发人员可以登录Esri最新的SDK安装包.或者通过云盘下载(http:/ ...
- Facebook Hack 语言 简介
1. Hack 是什么? Hack 是一种基于HHVM(HipHop VM 是Facebook推出的用来执行PHP代码的虚拟机,它是一个PHP的JIT编译器,同时具有产生快速代码和即时编译的优点.)的 ...
- LCD开发之汉字显示
一.LCD显示原理 利用液晶制成的显示器称为LCD,根据驱动方式可分为静态驱动.简单矩阵驱动以及主动矩阵驱动3种.当中,简单矩阵型又可再细分扭转向列型(TN)和超扭转式向列型(STN)两种,而主动矩阵 ...
- inux上iptables防火墙的基本应用教程
iptables是Linux上常用的防火墙软件,下面vps侦探给大家说一下iptables的安装.清除iptables规则.iptables只开放指定端口.iptables屏蔽指定ip.ip段及解封. ...
- 错 'Cannot run program "/home/uv/IDE/adt/sdk/platform-tools/adb": error=2, No such file or directory
为linux平台搭建android开发环境的人,您可能会遇到问题,如下面有: 64位置linux安装64位置eclipse和64位置jdk开场后eclipse错误后 ""Canno ...
- MonkeyRunner源码分析之-谁动了我的截图?
本文章的目的是通过分析monkeyrunner是如何实现截屏来作为一个例子尝试投石问路为下一篇文章做准备,往下一篇文章本人有意分析下monkeyrunner究竟是如何和目标测试机器通信的,所以最好的办 ...
- jquery插件分类与编写详细讲解
jquery插件分类与编写详细讲解 1. 插件种类 插件其实就是对现有的方法(或者叫函数)做一个封装,方便重用提高开发效率. jQeury主要有2种类型 1)实例对象方法插件 开发能让所有的j ...