您的位置:首页 > 数据库 > Mongodb

MongoDB安装及常用命令

2017-12-26 16:10 423 查看
下载地址:https://www.mongodb.com/download-center?jmp=nav#community

Windows下的安装

下载文件名为:mongodb-win32-x86_64-2008plus-ssl-3.6.0-signed.msi,双击安装,指定安装目录 C:\tools\MongoDB。

C:\tools\MongoDB下创建data文件夹,用于存放数据。

进入C:\tools\MongoDB的bin目录下,执行mongod.exe --dbpath=C:\tools\MongoDB\data启动服务。

注意,如果你的目录中有空格,会报Invalid command 错误,将dbpath 后面的值加上双

引号即可mongod.exe --dbpath=”C:\tools\MongoDB\data”。

如果报 api-ms-win-crt-runtime-l1-1-0.dll丢失 ,下载安装:链接:https://pan.baidu.com/s/1kUWJB2v 密码:szbm。

增加环境变量。

C:\tools\MongoDB\bin下创建mongodb.bat,并增加内容mongod.exe --dbpath=C:\tools\MongoDB\data,用于启动服务。

bin目录下执行mongo.exe进入后台管理。

Linux下的安装

1.下载wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.6.1.tgz

2.tar -zxvf mongodb-linux-x86_64-rhel62-3.6.1.tgz

3.重命名 mv mongodb-linux-x86_64-rhel62-3.6.1.tgz mongodb

4.cd mongodb(假设解压目录为/home/mongodb)

5.mkdir data

6.mkdir logs;logs目录下增加mongo.log

7.增加mongodb.conf

8.mongodb.conf增加如下配置:

dbpath =/home/mongodb/data #数据库路径 

logpath = /home/mongodb/logs/mongo.log #日志输出文件路径

logappend=true #错误日志采用追加模式  

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

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

port=27017 #端口号 默认为27017 

fork=true #后台运行

9.启动 ./bin/mongod -f mongodb.conf

10.连接./bin/mongo

常用命令:

1.创建数据库

use test

2.插入数据

db.user.insert({name:"admin",age:18})

3.查询

db.user.find();

db.user.findOne();

4.修改

db.user.update({name:"admin"},{$set:{age:21}});修改不存在的field会自动增加

db.user.update({name:"jerry"},{$set:{age:16}},true);第三个参数,为true时,执行insertOrUpdate,有匹配的update,无匹配的insert

db.user.update({name:"admin"},{$set:{age:18}},false,true);第一个false表示不执行insertOrUpdate,第二个true,表示执行批量更新,false只更新一条

db.user.update({name:"admin"},{$inc:{age:1}},false,false);$inc对数值型进行加减操作

 db.user.update({name:"admin"},{$unset:{sex:""}},false,false);$unset删除指定的field

db.user.update({name:"admin"},{$push:{classes:["java","php"]}});$push插入数组

db.user.update({name:"admin"},{$addToSet:{classes:"c++"}});$addToSet指定数组中插入相应的值

db.user.update({name:"admin"},{$pop:{classes:1}});$pop删除指定数组的值,value=1时删除最后一个,value=-1时删除第一个

db.user.update({name:"admin"},{$pull:{classes:"java"}});$pull删除数组中的指定值

 db.user.update({name:"admin"},{$pullAll:{classes:["java"]}});$pullAll批量删除指定数组

5.删除

db.user.remove({name:"admin"});

db.user.drop();删除集合;

db.dropDatabase();删除数据库

6.runCommand

user = db.runCommand({

findAndModify:"user",#表名

query:{name:"admin"},#查询器

sort:{},#排序

update:{$set:{age:22}},#修改器

new:true}#是否返回修改后的数据)

runCommand执行特殊函数,findAndModify就是特殊函数之一

7.高级查询

 db.user.find({},{_id:0,name:1});第一个{}表示查询所有数据,第二个{}里面value为0不显示,value为1显示,_id默认显示

比较操作符:$lt: <; $lte: <= ;$gt: > ;$gte: >=; $ne: !=

 db.user.find({age:{$gte:18,$lte:20}},{name:1,age:1})

包含与不包含:$in 或$nin,仅适用于数组

db.user.find({name:{$in:["admin","tom"]}},{_id:0,name:1,age:1})

$or查询

db.user.find({$or:[{age:{$gt:18}},{name:{$ne:"admin"}}]},{_id:0,name:1,age:1})

正则匹配

db.user.find({name:/ad/i});名字包含ad的区分大小写

db.user.find({name:{$not:/ad/}});$not 和$nin 的区别是$not 可以用在任何地方,$nin 是用到集合上的

$all 与index 的使用

db.user.find({classes:{$all:["c++"]}});

db.user.find({"classes.0":"c++"});集合第一项为c++

db.user.find({"classes.1.0":"java"});多维数组

$size不能与比较符同时使用

db.user.find({classes:{$size:4}})

$slice:[n.m]从n开始取m个

db.user.find({name:"admin"},{_id:0,name:-1,classes:{$slice:[2,1]}})

db.user.find({name:"admin"},{_id:0,name:-1,classes:{$slice:3}});默认从0开始,负数从右开始

分页与排序

db.user.find({},{_id:0,name:1,age:1}).limit(4);查询出前n条数据

db.user.find({},{_id:0,name:1,age:1}).limit(4).skip(1).sort({name:-1});查询第1条数据后的前4条,按name倒序排序。1为正序,先排序后分页。

注意:mongodb 的key 可以存不同类型的数据,排序就也有优先级

最小值->null->数字->字符串->对象/文档->数组->二进制->对象ID->布尔->日期->时间戳->正则->最大值

游标

var user = db.user.find();

while(user.hasNext()){

obj = user.next();

print(obj.name)};

}

游标几个销毁条件

1).客户端发来信息叫他销毁

2).游标迭代完毕

3).默认游标超过10 分钟没用也会被清除

count

db.user.find({name:"admin"}).count();

distinct

db.runCommand({distinct:"user",key:"name"}).values;key表示去重的键

group分组

db.runCommand({ group:{

ns:"集合的名字",

key:"分组键对象",

initial:"初始化累加器",

$reduce:"分解器",

condition:"条件",

finalize:"组完成器"

}})

db.runCommand({group:

{ns:"user",

key:{"name":true},

initial:{age:0},

$reduce:function(doc,prev){if(doc.age>prev.age){prev.name=doc.name;prev.age=doc.age}},

condition:{age:{$gt:10}},

finalize:function(prev){prev.age=prev.name+" de age is "+prev.age}}});

8.查看版本

db.runCommand({buildInfo:1})

9.查询执行集合的详细信息,大小,空间,索引等

db.runCommand({collStats:"user"})
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: