MongoDB基础知识必知必会(第二章)

619 阅读4分钟

一:数据库使用

  • 开启mongodb服务:要管理数据库,必须先开启服务,开启服务需在CMD中使用 mongod --dbpath c:\mongodb
  • 新开一个CMD输入mongo

mongodb常用指令速记

1.查看所有数据库列表

show dbs

2.使用数据库,创建数据库

use student 

注意事项:

如果想要再通过show dbs查看到student这个新建的数据库,
那么必须在此数据库插入一个数据,
但数据库不能直接插入数据,
只能往集合(collection)中插入数据

3.往新建数据库的集合中插入数据

db.admin.insert({"name":"lth"})

4.显示当前的数据集合

show collections

5.删除数据库,删除当前所在的数据库

db.dropDatabase()

6.删除集合,删除指定的的集合,删除表

db.COLLECTION_NAME.drop()

7.查找所有记录

db.userinfo.find()
---> userinfo为表名

db.admin.find()
查找该数据库下表名为admin的所有记录

8.查询去掉后的当前聚集集合中的某列的重复数据

db.userInfo.distinct("name");
---> userinfo为表名

db.admin.distinct("admin")
查找该数据库下表名为admin并过滤掉admin中的相同数据

9.查询指定数据库下admin表中字段“admin”``等于1的记录

db.userInfo.find({"admin": 1});
---> userinfo为表名

 db.admin.find({"admin":1})

10.查询指定数据库下admin表中字段“admin”大于1的记录

db.userInfo.find({admin: {$gt: 1}});
---> userinfo为表名

db.admin.find({admin: {$gt: 1}})

11.查询指定数据库下admin表中字段“admin”小于1的记录

db.userInfo.find({admin: {$lt: 1}});
---> userinfo为表名

db.admin.find({admin: {$lt: 1}})

12.查询指定数据库下admin表中字段“admin”大于等于1的记录

db.userInfo.find({admin: {$gte: 1}});
---> userinfo为表名

db.admin.find({admin: {$gte: 1}})

13.查询指定数据库下admin表中字段“admin”大于等于1并且小于等于15的记录

db.userInfo.find({admin: {$gte: 1, $lte: 15}});
---> userinfo为表名

db.admin.find({admin: {$gte: 1, $lte: 15}})

14.查询指定数据库下admin表中字段“admin”包含mongo的数据

db.userInfo.find({admin: /mongo/});
---> userinfo为表名

db.admin.find({admin: /mongo/})

15.查询指定数据库下admin表中字段“admin”包含以mongo开头的数据

db.userInfo.find({name: /^mongo/});
---> userinfo为表名

db.admin.find({name: /^mongo/})

16.查询指定数据库下admin表中指定列nameage的数据(不显示其他列的信息)

db.userInfo.find({}, {name: 1, age: 1});
---> userinfo为表名

db.admin.find({}, {name: 1, age: 1})

17.查询指定数据库下admin表中指定列nameage中age>25的数据(不显示其他列的信息)

db.userInfo.find({age: {$gt: 25}}, {name: 1, age: 1});

---> userinfo为表名

db.admin.find({age: {$gt: 25}}, {name: 1, age: 1})

18.查询指定数据库下admin表中的数据并要求按照年龄排序

升序--1:
db.userInfo.find().sort({age: 1});
降序---1:
db.userInfo.find().sort({age: -1});

19.查询指定数据库下admin表中指定列name=zhangsanage=25的数据(不显示其他的信息)

db.userInfo.find({name: 'zhangsan', age: 22});
---> userinfo为表名

db.admin.find({name: 'zhangsan', age: 22})

20.查询指定数据库下admin表中的前5条数据信息

db.userInfo.find().limit(5);
---> userinfo为表名

db.admin.find().limit(5);

21.查询指定数据库下admin表中的10条之后的数据信息

db.userInfo.find().skip(10);
---> userinfo为表名

db.admin.find().skip(10);

22.查询指定数据库下admin表中5-10之间的数据信息

db.userInfo.find().limit(10).skip(5);
---> userinfo为表名

db.admin.find().limit(10).skip(5)


注意事项:
在做分页拉取数据信息的时候,如果一页数据有10条,请问第三页拉取的信息数据怎么获取?(假定为admin表,表中数据无限)
db.admin.find().limit(10).skip((3-1)*10)

23.or与查询

db.userInfo.find({$or: [{age: 1}, {age: 2}]})

24.fineOne查询第一条数据

db.userInfo.findOne();

--->db.userInfo.find().limit(1);

25.查询某个结果集的记录条数、统计数量

db.userInfo.find({age: {$gte: 2}}).count();

注意事项:
如果要返回限制之后的记录数量,要使用 count(true)或者 count(非 0) 
db.users.find().skip(10).limit(5).count(true);

26.修改数据,查询指定数据库下admin表中字段“name”为xiaohua的,把其字段“age”更换值为16岁

db.admin.update({"name":"xiaohua"},{$set:{"age":16}});

27.更换所有匹配项目,查询指定数据库下admin表中所有字段“sex”为male的,将其字段“age”的值更换为10

db.admin.update({"sex":"male"},{$set:{"age":10}},{multi: true});

28.完整替换,不出现$set关键字了

db.admin.update({"name":"xiaohua"},{"name":"xiaohua","age":16});

29.删除数据

db.collectionsNames.remove( { "admin": "1" } )

db.restaurants.remove( { "admin": "1" }, { justOne: true } )

mongodb数据库导出备份方法

mongodump -h dbhost -d dbname -o dbdirectory

参数说明:

-h 
mongodb所在的服务器地址,
例如127.0.0.1,
也可以指定端口号127.0.0.1:27017
-d 
需要备份的数据库实例,
例如data
(数据库可以用show dbs查看)
-o 
备份的数据存放位置,
例如:D:\mongodb\data,
当然该目录需要提前建立,
这个目录里面存放该数据库实例备份数据

mongodb数据库恢复导入方法

mongorestore -h dbhost -d dbname dbdirectory 参数说明

-h
mongobd所在的服务器地址
-d
需要恢复的数据库实例,
例如data
当然这个名称可以和备份的时候命名不一样
--drop
恢复的时候
先删除当前数据
然后恢复备份的数据
就是说,恢复后
备份后添加添加修改的数据都会被删除