Windows再次操作mongo及相关命令(终端命令行)

版权声明: https://blog.csdn.net/bensonrachel/article/details/80636870

> use test
switched to db test
> db.student.insert({sname:'jack'})
WriteResult({ "nInserted" : 1 })
> db.student.find()
{ "_id" : ObjectId("5b1bcea9d11420d81c574a62"), "sname" : "jack" }
> db.student.insert({sname:'jone',age:18,dept:'comp.',weight:48})
WriteResult({ "nInserted" : 1 })
> db.student.count()
2
> db.student.find({sname:'jone'})
{ "_id" : ObjectId("5b1bcf31d11420d81c574a63"), "sname" : "jone", "age" : 18, "dept" : "comp.", "weight" : 48 }
> db.student.update({sanem:'jack'},{$set:{city:'tianjin'}})
WriteResult({ "nMatched" : 0, "nUpserted" : 0, "nModified" : 0 })
> db.student.remove({sanme:'jone'})
WriteResult({ "nRemoved" : 0 })
> db.student.remove({sanme:'jack'})
WriteResult({ "nRemoved" : 0 })
> db.student.remove({sname:'jack'})
WriteResult({ "nRemoved" : 1 })
> db.student.remove({sname:'jone'})
WriteResult({ "nRemoved" : 1 })
> db.student.insert({sname:'jack'})
WriteResult({ "nInserted" : 1 })
> db.student.update({sname:'jack'},{$set:{city:'tianjin'}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.student.remove({sname:'jack'})
WriteResult({ "nRemoved" : 1 })
> for(i=0;i<2000;i++){
... db.student.insert({num:i})
... }
WriteResult({ "nInserted" : 1 })
> db.student.count()
2000
> db.student.find({num:{"$gte":20,"$lte":30}})
{ "_id" : ObjectId("5b1bd15dd11420d81c574a79"), "num" : 20 }
{ "_id" : ObjectId("5b1bd15dd11420d81c574a7a"), "num" : 21 }
{ "_id" : ObjectId("5b1bd15dd11420d81c574a7b"), "num" : 22 }
{ "_id" : ObjectId("5b1bd15dd11420d81c574a7c"), "num" : 23 }
{ "_id" : ObjectId("5b1bd15dd11420d81c574a7d"), "num" : 24 }
{ "_id" : ObjectId("5b1bd15dd11420d81c574a7e"), "num" : 25 }
{ "_id" : ObjectId("5b1bd15dd11420d81c574a7f"), "num" : 26 }
{ "_id" : ObjectId("5b1bd15dd11420d81c574a80"), "num" : 27 }
{ "_id" : ObjectId("5b1bd15dd11420d81c574a81"), "num" : 28 }
{ "_id" : ObjectId("5b1bd15dd11420d81c574a82"), "num" : 29 }
{ "_id" : ObjectId("5b1bd15dd11420d81c574a83"), "num" : 30 }
> function test(a){
... return a+1;
... }
> test(1)
2
MongoDB 数据库实验指导
MongoDB数据库 实验指导
一、 实验目的
1、了解MongoDB特点、安装和启动
2、了解MongoDB的常用命令
二、 实验内容
1、安装MongoDB
(1) MongoDB的官方下载网站:http://mongodb.org/downloads;
(2) 安装:根据操作系统选择所需的版本,下载后直接安装即可,安装时选择对应的操作系统即可,默认会安装到路径C:\Program Files\MongoDB\下;
2、配置MongoDB
(1) 配置环境变量path
将MongoDB文件夹中bin目录的路径建立到系统环境变量path中;
(2) 创建存储数据文件所在的文件夹
启动MongoDB时要指定存储数据文件的路径及文件名,需要用户自己创建,所以要先建立相应的文件夹。如:在D盘下创建一个MongoDB文件夹,在其中再创建一个data子文件夹,所以路径为d:\mongodb\data;
如果需要记日志,则还要在d:\mongodb\下建立文件夹log,路径为d:\mongodb\log;
3、启动MongoDB
(1)命令:mongod.exe命令 1
MongoDB 数据库实验指导
(2)作用:启动mongodb数据库服务器,mongod.exe是启动数据库实例进程的可执行文件,是整个MongoDB中最核心的内容,可进行复制数据库的创建、删除等管理工作,运行在服务器端为客户端提供监听;
(3)常用格式:
>mongod --dbpath=d:\MongoDB\data

>mongod --dbpath=d:\MongoDB\data --logpath=d:\MongoDB\log\mongo.log
解释:表示启动mongodb,同时设置数据库和日志的存储路径;
在cmd窗口执行该命令后,看到下图,则表示启动成功。
(4)使用端口号测试
mongodb默认连接端口27017,可在浏览器输入http://localhost:27017/,可以看到下图信息,表示启动成功。
2
MongoDB 数据库实验指导
4、使用mongo命令连接MongoDB服务器
(1)命令:mongo.exe
(2)作用:该命令是一个与mongod进程进行交互的JavaScritp Shell进程,它提供了一些交互的接口函数用于系统管理员对数据库系统进行管理;
(3)常用格式: >mongo
新开一个cmd窗口,输入mongo或者mongo.exe命令,出现如下界面则说明已连接到MongoDB服务器。
(4) 输入exit或者ctrl+C可从客户端mongo中退出。
5、MongoDB shell的基本命令
(1)显示所有数据库
>show dbs;
(2)切换/创建数据库,如果数据库不存在,会自动创建
>use user
(3)创建集合
//在选中的数据库中创建名称为user的集合
>db.createCollection('user')
//自动创建集合并插入一个文档
>db.topic.insert({uname:’1’});
(4)显示数据库中所有的集合 3
MongoDB 数据库实验指导
>show collections
(5)插入数据(insert)
>db.user.insert({uname:’1’,date:new Date()})
>db.user.insert({uname:’2’,date:new Date()})
解释:mongodb是一个类似kv的系统,所有插入的数据会默认生成一个_id的字段作为key,其中的ObjectID是mongodb自动进行分配的;
当collection不存在时,产生相应的数据库集,并插入相应数据。此过程会分配内存,并产生相应的文件,同时插入数据,所以第一次插入数据的速度会相对较慢。
(6)查找数据(find)
格式:find(查询匹配表达式),查询匹配表达式也是JSON形式:字段:'内容
// 查询所有的数据
>db.user.find()
//条件查询:查询'uname'为2的所有记录
>db.user.find({uname:'2'});
//查找users集合中的第一条数据
>db.users.findOne()
(7)更新数据(Update)
格式1:db.user.update({更新查询条件},{$set:{更新内容}})
功能:更新符合查询条件的内容,如果字段不存在,则添加相应字段并进行更新;
db.user.update({uname:’1’},{$set:{sex:'man'}})
注:$set为操作符的一种
格式2:db.user.update({更新查询条件},{更新内容})
功能:第一个参数是查找条件,第二个参数是修改内容,除了主键,其他内容会部被第二个参数的内容替换,主键不能修改;
db.user.update({uname:’1’},{sex:'woman'})
(8)删除数据(Delete)
//删除集合user中uname=’2’所有的数据
>db.user.remove({uname:’2’}) 4
MongoDB 数据库实验指导
//删除集合
>db.user.drop()
//删除当前的数据库
>db.dropDatabase()
6、综合练习
(1)切换并产生数据库
>use test
(2)插入相应数据
>db.student.insert({sname:'Jack'})
(3)显示所有数据
>db.student.find()
结果:{ "_id" : ObjectId("4ef311a1776fbc2bc7dd038f"), "sname" : "Jack" }
(4)继续插入数据
>db.student.insert({sname:'Jone',age:18,dept:’comp.’,weight:48})
//统计collection 中的数据条目数。
>db.student.count()
(5)进行相应的查询,查询sname 为’Jone’的所有记录
>db.student.find({sname:'Jone'})
(6)数据更新
>db.student.update({sname:'Jack'},{$set:{city:'tianjin'}})
(7)删除数据
>db.student.remove({sname:’Jone’})
>db.student.remove({sname:’Jack’})
解释:进行Collection的有条件删除,删除Jone。
5
MongoDB 数据库实验指导
(8)使用循环语句插入2000条数据
>for(i=0;i<2000;i++){
>...db.student.insert({num:i});
>...}
(9)查询相应的数据
>db.student.count()
注意:应该返回2000
(10)进行相应数据范围查询
如:查找num在[20,30]之间的数据
>db.student.find( {num: {"$gte": 20, "$lte": 30 }} )
(11) 自定义函数
> function test(a){
... return a+1;
... }
> test(1)
7、MongoDB的高级操作
(1)内嵌文档字段的实现:
db.user.insert({_id:1,uname:'zhangsan',love:{football:1,basketball:2}}) 6
MongoDB 数据库实验指导
查询:db.user.find({'love.football':1})
(2)数组字段的实现
db.user.insert({_id:2,uname:'lisi',love:['reading','study','travell']})
查询:db.user.find({love:'reading'})
(3)时间字段的实现
db.user.insert({_id:3,uname:'Rose',love:['reading','study','travell'],
create_time:new Date()})
(4)$inc操作符的使用
用法:{$inc:{field:value}} (value可以为负值)
作用:对一个数字字段的某个field增加value
示例:将name为Mary的学生的age增加2
>db.user.insert({uname:'Mary',age:18})
> db.user.update({uname:’Mary’},{$inc:{age:2}}) 增加2岁
> db.user.update({uname:’Mary’},{$inc:{age:-2}}) 减少2岁
(5)$set操作符的使用
用法:{$set:{field:value}}
作用:把文档中某个字段field的值设为value的值
示例: 把Mary的年龄设为20岁
>db.user.update({uname:’Mary’},{$set:{age:20}})
(6)$unset
用法:{$unset:{field:1}}
作用:删除某个字段field
示例: 将Mary的age字段删除
>db.user.update({uname:’Mary’},{$unset:{age:1}})
(7)$push
用法:{$push:{field:value}}
作用:把value追加到field里。注:field只能是数组类型,如果field不存在,会自动插入一个数组类型。 7
MongoDB 数据库实验指导
示例:给Mary添加别名"honey"
> db.user.update({uname:’Mary’},{$push:{ailas:’honey’}})
> db.user.update({uname:’Mary’},{$push:{ailas:’lucky’}})
(8)$pop
用法:删除数组内第一个值:{$pop:{field:-1}}
删除数组内最后一个值:{$pop:{field:1}}
作用:用于删除数组内的一个值
示例: 删除Mary记录中alias字段中第一个别名
>db.students.update({uname:"Mary"},{$pop:{ailas:-1}})
(9)$pull
用法:{$pull:{field:_value}}
作用:从数组field内删除一个等于_value的值
示例:删除Mary记录中的别名lucky
> db.user.update({uname:" Mary"},{$pull:{ailas:’lucky’}})
(10)$pullAll
用法:{$pullAll:value_array}
作用:用法同$pull一样,可以一次性删除数组内的多个值。
示例: 删除Mary记录内的所有别名
>db.user.update({uname:"Mary"},{$pullAll:{ailas:[‘honey’,’lucky’]}})
(11)$rename
用法:{$rename:{old_field_name:new_field_name}}
作用:对字段进行重命名
示例:把Mary记录的uname字段重命名为sname
>db.user.update({uname:’Mary’},{$rename:{uname:’sname’}})
(12)常用函数
count():统计符合条件的记录数,如:db.user.count()
limit(n) : 显示前n条记录, 如:db.user.find().limit(2)
sort(): 对查询结果排序,sort(1)表示升序,sort(-1)表示降序, 8
MongoDB 数据库实验指导
如:db.user.find().limit(4).sort({uname:-1})
skip(n):跳过n条记录后再做查询,
如:db.user.find().skip(2)
(13)MongoDB中的索引
索引通常能够极大的提高查询的效率。在系统中使用查询时,应该考虑建立相关的索引。在MongoDB中创建索引相对比较容易。MongoDB中的索引在概念上和大多数关系型数据库如MySQL是一样的。在MySQL中建立索引的情景同样适合于MongoDB。
函数:ensureIndex()
该函数建立索引,并指定一个到多个需要索引的字段
db.user.ensureIndex({uname:1}) 1:正序 -1:反序
函数:getIndexes() 查看当前集合中的所有索引
db.user.getIndexes()
函数:dropIndexes() 删除user集合所有自定义的索引
db.user.dropIndexes()
函数:dropIndex() 删除指定的索引
db.user.dropIndex({uname:1})
(14)数据库备份和恢复
备份命令:mongodump -h dbhost -d dbname -o dbdirectory
-h:MongDB所在服务器地址,例如:127.0.0.1,
当然也可以指定端口号:127.0.0.1:27017
-d:需要备份的数据库实例,例如:test
-o:备份的数据存放位置,例如:d:\mongodb\data\backup。该目录需要提前建立,在备份完成后,系统自动在backup目录下建立一个test目录,这个目录里面存放了该数据库实例的备份数据。
备份示例:新开一个cmd,运行以下命令:
mongodump –d test –o d:\mongodb\data\backup
///////////////////////////////////////// 9
MongoDB 数据库实验指导
恢复命令:mongorestore -h dbhost -d dbname dbdirectory
-h:MongoDB所在服务器地址
-d:需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2
dbdirectory:备份数据所在位置,
--drop:恢复的时候,先删除当前数据,然后恢复备份的数据。
恢复示例:新开一个cmd,运行以下命令:
>mongorestore -d test2 d:\mongodb\data\backup\test
查询当前的数据库,应该出现test2数据库:
>show dbs

猜你喜欢

转载自blog.csdn.net/bensonrachel/article/details/80636870