mongodb入门-1(安装与测试)

1 安装

官方地址:http://www.mongodb.org/downloads

windows:

1.1 mongodb安装完后,启动前创建一下几个文件或者文件夹

1 数据库存储文件夹 db

2 日志文件夹 logs

3 日志文件 mongodb.log

4 配置文件文件夹 conf

5 conf 该文件夹下创建配置文件 mongo.conf

配置文件信息如下:

————————————————————————————————————————————————————————————————————————————————

dbpath=E:\WeiWork\mdb\data #存储数据文件

logpath=E:\WeiWork\mdb\logs\mongodb.log #日志输出文件路径

logappend=true #错误日志采用追加模式,配置这个选项后mongodb的日志会追加到现有的日志文件,而不是从新创建一个新文件

journal=true #启用日志文件,默认启用

quiet=true #这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false

port=27017 #端口号 默认为27017

auth=true   #启用验证 需要用户名密码

————————————————————————————————————————————————————————————————————————————————

1.2 启动cmd命令(win+R),

先进入安装目录 cd C:\Program Files\MongoDB\Server\3.4\bin

目录下文件说明:

Server(服务端) mongod.exe
Router(路由) mongos.exe
Client(客户端) mongo.exe
MonitoringTools mongostat.exe, mongotop.exe
ImportExportTools mongodump.exe, mongorestore.exe, mongoexport.exe, mongoimport.exe
MiscellaneousTools bsondump.exe, mongofiles.exe, mongooplog.exe, mongoperf.exe

设置配置文件

mongod --config " E:\WeiWork\mdb\conf\mongo.conf"\

安装Windows服务

mongod --config "E:\WeiWork\mdb\\conf\mongo.conf" --install --serviceName "MongoDB"

启动服务

net start MongoDB
访问 http://localhost:27017/

2 客户端连接:

常用cmd:

db 查看当前使用数据库

use dbname 切换数据库到指定数据库

3 测试

插入数据

db.user.insert({name:"jack"})

查找数据

db.user.find({name:"jack"})

更新数据

db.user.update({name:"2131'})

4 可视化管理工具

https://robomongo.org/download

5 .NET 调驱动

NuGet

MongoDB.Drive,MongoDB.Bson ,MongoDB.Drive.Core

测试代码:

MongoClient client = new MongoClient("mongodb://localhost");

IMongoDatabase db = client.GetDatabase("school");

var user = new User() {

Name="Weu",

Age=12

};

db.GetCollection<User>("User")

.InsertOne(user);

var list= db.GetCollection<User>("User")

.Find(c=>c.Age>10);

帮助类:

using MongoDB.Driver;

using System;

using System.Collections.Generic;

using System.Linq;

using System.Linq.Expressions;

using System.Text;

using System.Text.RegularExpressions;

using System.Threading.Tasks;

namespace Mongo

{

class MongoDBHelper

{

private static MongoClient client;

private static IMongoDatabase database;

//本地配置

private const string MongoDBConnectionStr = "mongodb://localhost";

//数据库名称

private static string DefaultDataBaseName = "Test";

public MongoDBHelper()

{

GetConnection(DefaultDataBaseName);

}

/// <summary>

/// 构造函数 指定数据库

/// </summary>

/// <param name="dataBaseName"></param>

public MongoDBHelper(string dataBaseName)

{

GetConnection(dataBaseName);

}

private static void GetConnection(string dataBaseName)

{

client = new MongoClient(MongoDBConnectionStr);

database = client.GetDatabase(dataBaseName);

}

/// <summary>

/// 异步插入一条数据,手动输入collection name

/// </summary>

public Task InsertAsync<T>(string collectionName, T obj)

{

if (database == null)

{

throw new Exception("没有指定数据库");

}

var collection = database.GetCollection<T>(collectionName);

return collection.InsertOneAsync(obj);

}

/// <summary>

/// 异步插入一条数据,采用类型T的完全限定名作为collection name

/// </summary>

public Task InsertAsync<T>(T obj)

{

return InsertAsync(typeof(T).FullName, obj);

}

/// <summary>

/// 异步插入多条数据,手动输入collection name

/// </summary>

public Task BatchInsertAsync<T>(string collectionName, IEnumerable<T> objs)

{

if (database == null)

{

throw new Exception("没有指定数据库");

}

if (objs == null)

{

throw new ArgumentException();

}

var collection = database.GetCollection<T>(collectionName);

return collection.InsertManyAsync(objs);

}

/// <summary>

/// 异步插入多条数据,采用类型T的完全限定名作为collection name

/// </summary>

public Task BatchInsertAsync<T>(IEnumerable<T> objs)

{

return BatchInsertAsync(typeof(T).FullName, objs);

}

/// <summary>

/// 插入一条数据

/// </summary>

public void Insert<T>(T obj)

{

InsertAsync(obj).Wait();

}

/// <summary>

/// 插入多条数据

/// </summary>

public void Insert<T>(IEnumerable<T> objs)

{

BatchInsertAsync(objs).Wait();

}

/// <summary>

/// MongoDB C# Driver的Find方法,返回IFindFluent。手动输入collection name

/// </summary>

public IFindFluent<T, T> Find<T>(string collectionName, FilterDefinition<T> filter, FindOptions options = null)

{

if (database == null)

{

throw new Exception("没有指定数据库");

}

var collection = database.GetCollection<T>(collectionName);

return collection.Find(filter, options);

}

/// <summary>

/// MongoDB C# Driver的Find方法,返回IFindFluent。采用类型T的完全限定名作为collection name

/// </summary>

public IFindFluent<T, T> Find<T>(FilterDefinition<T> filter, FindOptions options = null)

{

return Find(typeof(T).FullName, filter, options);

}

/// <summary>

/// 取符合条件的数据 sort中多个排序条件逗号分隔,默认asc

/// </summary>

public List<T> Get<T>(Expression<Func<T, bool>> condition, int skip, int limit, string sort)

{

return Get(new List<Expression<Func<T, bool>>> { condition }, skip, limit, sort);

}

public List<T> Get<T>(Expression<Func<T, bool>> condition)

{

return Get(condition, 0, 0, null);

}

/// <summary>

/// 取符合条件的数据 sort中多个排序条件逗号分隔,默认asc

/// </summary>

public List<T> Get<T>(List<Expression<Func<T, bool>>> conditions, int skip, int limit, string sort)

{

if (conditions == null || conditions.Count == 0)

{

conditions = new List<Expression<Func<T, bool>>> { x => true };

}

var builder = Builders<T>.Filter;

var filter = builder.And(conditions.Select(x => builder.Where(x)));

var ret = new List<T>();

try

{

List<SortDefinition<T>> sortDefList = new List<SortDefinition<T>>();

if (sort != null)

{

var sortList = sort.Split(',');

for (var i = 0; i < sortList.Length; i++)

{

var sl = Regex.Replace(sortList[i].Trim(), @"\s+", " ").Split(' ');

if (sl.Length == 1 || (sl.Length >= 2 && sl[1].ToLower() == "asc"))

{

sortDefList.Add(Builders<T>.Sort.Ascending(sl[0]));

}

else if (sl.Length >= 2 && sl[1].ToLower() == "desc")

{

sortDefList.Add(Builders<T>.Sort.Descending(sl[0]));

}

}

}

var sortDef = Builders<T>.Sort.Combine(sortDefList);

ret = Find(filter).Sort(sortDef).Skip(skip).Limit(limit).ToListAsync().Result;

}

catch (Exception e)

{

//异常处理

}

return ret;

}

public List<T> Get<T>(List<Expression<Func<T, bool>>> conditions)

{

return Get(conditions, 0, 0, null);

}

}

}
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 31,893评论 2 89
  • MongoDB是一个C++编写的基于分布式文件存储的数据库,是一个介于关系和非关系之间的数据库,当然也属于NoSQ...
    Anwar_ec28阅读 4,669评论 0 0
  • MongoDB与关系型数据库对比 MongoDB属于文档型的非关系型数据库,其他像Redis就属于键值对型的非关系...
    少见多怪阅读 1,746评论 0 4
  • 背景: 阅读新闻 12C CDB模式下RMAN备份与恢复 [日期:2016-11-29] 来源:Linux社区 作...
    阳屯okyepd阅读 3,332评论 0 7
  • 春天万物复苏,在冬天孕育的生命开始怒放,那一抹新绿,更是让人觉得明亮清新。 绿树成荫,抬头仰望绿色的天,稀稀疏疏的...
    嵇欢悦阅读 429评论 5 6