MongoDB
非关系型数据库
1.1 Windows环境下安装
官网地址:https://www.mongodb.com/download-center#community
1.2 数据目录安装
安装成功后,目录结构如下:
MongoDB将数据目录存储在 db 目录下。但是这个数据目录不会主动创建,我们在安装完成后需要创建它。请注意,数据目录应该放在盘根目录下
在 D盘 新建文件夹 data, 文件夹 data下新建db
1.3 命令行下运行MongoDB
cmd命令,到MongoDB安装目录bin下
执行以下命令: mongod --dbpath d:\data\db
如执行成功,如图:
mongodb默认连接端口27017,如果出现如图的情况,可以打开http://localhost:27017查看(笔者这里是chrome),发现如图则表示连接成功,如果不成功,可以查看端口是否被占用。
至此,安装成功!! 此时服务器也为启动状态
1.4 MongoDB操作命令
服务启动成功后 就需要操作了。这时候我们需要再打开一个dos窗口(服务启动的窗口不要关闭)找到安装路径(我的安装路径 为 D:install\mongoDB\bin) 执行 mongo 此时第一个dos窗口(也就是启动服务的窗口会显示)
然后,继续在该目录下通过命令行进行查看:
操作命令:
1. 基本操作:
操作指令 | 释义 | |
基本操作 | show dbs | 显示所有数据库 |
use xxx | 选择用哪个数据库 | |
db.createCollection("集合名称",{capped:true,size:100000}) | 创建集合 | |
document={"1":"2","3":"4"} | 新建文档 | |
db.printCollectionStats(); | 查看当前数据库下的所有集合 |
2. 插入操作:
可以先定义一个文档document ,后将文档插入到集合中。或者直接将输入插入到集合中。
db.集合名称.insert(已定义的文档);
db.集合名称.insert(数据);
3. 查询:
db.集合名称.find();显示文档
db.集合名称.find(where);
查询姓名为字符类型的数据记录
:$type操作符是基于BSON类型来检索集合中匹配的结果。
db.集合名称.find({"name":{$type:2}});
Double 1
String 2
Object 3
Array 4
Binary data 5
Object id 7
Boolean 8
Date 9
Null 10
Regular expression 11
JavaScript code 13
Symbol 14
JavaScript code with scope 15
32-bit integer 16
Timestamp 17
64-bit integer 18
Min key 255
Max key 127
db.集合名称.find({条件}).limit(10); // 满足条件的,取10条
3. 更新操作
db.集合名称.update(where,set,未找到插入新的为true,更新多条为true);
db.集合名称.update({"id":"1"},{"$set":{"name":"yuan","sex":"男"}},false,true);
更新添加字段:$push
---db.student.update({"sno":2},{$push:{"classes":"san"}})
4. 删除操作
db.集合名称.remove(where);
db.集合名称.remove();删除全部记录
db.集合名称.drop();删除全部文档(document)
5. 操作符
(>) 大于 - $gt ---db.student.find({"sno":{"$gt":2}})
(<) 小于 - $lt---db.student.find({"sno":{"$lt":2}})
(>=) 大于等于 - $gte --示例:db.student.find({"sno":{"$gte":2}});
(<= ) 小于等于 - $lte --
6. 其他操作
db.集合名称.Count(where); ---显示满足条件的条数---db.student.count({"sno":{$type:1}});
db.集合名称.distinct("key"); ---得到所有key的value(去掉重复的)---db.student.distinct("sno");
7. 管理
查看collection数据的大小
db.集合名称.dataSize()
#查看colleciont状态 db.集合名称.stats()
#查询所有索引的大小 db.集合名称.totalIndexSize()
8. MongoDB与MySQL对比
| MongoDB | |
查询全部 | movies.find(new Document()) | SELECT * FROM movies |
条件查询 | movies.Find(new Document { { "title", "Hello Esr" } }); | SELECT * FROM movies WHERE title= 'foobar' |
查询数量 | movies.Find(new Document { { "title", "测试2" } }).Documents.Count(); | SELECT COUNT(*) FROM movies WHERE `title` = 'foobar' |
数量范围查询 | 1, movies.Find(new Document().Add("$where", new Code("this.num > 50"))); | select * from movies where num > 50 |
分页查询 | movies.Find(new Document()).Skip(10).Limit(20); | SELECT * FROM movies limit 10,20 |
查询排序语句 | movies.Find(new Document()).Sort(new Document() { { "num", -1 } }); | SELECT * FROM movies ORDER BY num DESC |
查询指定字段 | movies.Find(new Document().Add("num", new Document().Add("$gt", 50)), 10, 0, new Document() { { "title", 1 } }); | select title from movies where num > 50 |
插入语句 | movies.Insert(new Document() { { "title", "测试" }, { "resuleData", DateTime.Now } }); | INSERT INOT movies (`title`, `reauleDate`) values ('foobar',25) |
删除语句 | movies.Remove(new Document() { { "title", "Hello Esr" } }); | DELETE * FROM movies |
更新语句 | movies.Update(new Document() { { "title", "测试2" } } | UPDATE movies SET `title` = ‘测试1111’ WHERE `title` = '测试1111' |
Linq查询 | (from item in db.GetCollection("movies").Linq() | select * from movies where title like ‘%Esr’ |