mongodb的安装和sql操作
mongodb安装
环境:centos6.5
https://www.mongodb.org/dl/linux/x86_64
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2.4.tgz
1 安装mongodb
cd /usr/local/src
tar -xf mongodb-linux-x86_64-rhel62-3.4.4
mv mongodb-linux-x86_64-rhel62-3.4.4 /usr/local/mongodb 改名到/usr/local下名为mongodb
cd /usr/local/mongodb mongodb主目录
mkdir /usr/local/mongodb/data 数据目录
mkdir /usr/local/mongodb/log 日志目录
2 启动mongodb
使用mongodb命令建立一个数据库链接,端口设置10001
数据库路径:/usr/local/mogodb/data
日志路径:/usr/local/mogodb/log/mogodb.log
启动程序放在后台,下面命令执行后按ctrl+c
nohup /usr/local/mogodb/bin/mogod --dbpath=/usr/local/mogodb/data --logpath=/usr/local/mongodb/log/mongl.log &
mongodb默认端口是27017
ps -ef | grep mongodb
root 14858 14518 1 15:01 pts/1 00:00:01 /usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data/ --logpath=/usr/local/mongodb/log/mongo.log
root 14887 14518 0 15:02 pts/1 00:00:00 grep mongodb
nestat -ltpun | grep 14858
tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 14858/mongod
lsof -i:27017
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mongod 14858 root 7u IPv4 145311 0t0 TCP *:27017 (LISTEN)
3 设置环境变量
vim /etc/profile
export PATH=$PATH:/usr/local/mongodb/bin/
source /etc/profile
4 写shell脚本放到server中,参数写到配置文件中,方便启动和关闭mongodb
cat /usr/local/mongodb/mongodb.conf
port=27017
dbpath=/usr/local/mongodb/data
logpath=/usr/local/mogodb/log/mongo.log
logappend=true
5 编写启动脚本
vim /etc/init.d/mongodb
chmod 755 /etc/init.d/mongodb
/etc/init.d/mongodb status
/etc/init.d/mongodb stop
/etc/init.d/mongodb start
lsof -i:27017
#!/bin/bash
#
# mongod Start up the MongoDB server daemon
#
# source function library
. /etc/rc.d/init.d/functions
#定义命令
CMD=/usr/local/mongodb/bin/mongod
#定义配置文件路径
INITFILE=/usr/local/mongodb/mongodb.conf
start()
{
#&表示后台启动,也可以使用fork参数
$CMD -f $INITFILE &
echo "MongoDB is running background..."
}
stop()
{
pkill mongod
echo "MongoDB is stopped."
}
case "$1" in
start)
start
;;
stop)
stop
;;
*)
echo $"Usage: $0 {start|stop}"
esac
5 通过shell连接mongodb
# 在客户机上连接本机mongodb:mongo 192.168.133.143:27017
#mongo
2017-06-03T15:17:55.700+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2017-06-03T15:17:55.700+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2017-06-03T15:17:55.700+0800 I CONTROL [initandlisten]
2017-06-03T15:17:55.700+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2017-06-03T15:17:55.700+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
>help help可以查看他的参数
mongodb非正常关闭,导致启动失败的问题
关闭后再次重启后发现报错信息:
#/usr/local/mongodb/bin/mongod --logpath
/usr/local/mongodb/log/system.log --logappend --dbpath /data/mongodb --directoryperdb
--auth --journal --profile=1 --slowms=5 --fork
forked process:4853
all output going to:/usr/local/mongodb/log/system.log
查看日志:
其中有句话:j._34:can't find its prececding file
journal dir=/data/mongodb/journal
dbexit:really exiting now
这是由于mongodb非正常关闭导致的
解决办法:
rm -rf /data/mongodb/mongod.lock
/usr/local/mongodb/bin/mongod --logpath --dpath /data/mongodb --repair
rm -rf /data/mongodb/journal/*j._4
启动mongodb:/usr/local/mongodb/bin/mongod --logpath --dbpath /data/mongodb
--directoryperdb --auth --journal --profile=1 --slowms=5 --fork &
正确关闭:
>use admin
>db.shutdownServer()
或者killall mongod
yum安装mongodb
1 创建repo
vim /etc/yum.repo.d/mongo-org.repo
[mongodb-org-3.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/
gpgcheck=0
enabled=1
2 安装mongodb和相关工具
yum -y install mongodb-org
service mongod start
chkconfig mongod on
lsof -i:27017
日志文件:/var/log/mongodb/mongodb.log
配置文件:/etc/mongod.conf
数据目录:/var/lib/mongo
3 数据文件解释:
cat /etc/mongod.conf
# mongo.conf
#where to log
logpath=/var/log/mongo/mongod.log
logappend=true #以追加方式写入日志
# fork and run in background
fork = true
#port = 27017 #端口
dbpath=/var/lib/mongo #数据库文件保存位置
directoryperdb=true
# Enables periodic logging of CPU utilization and I/O wait
#启用定期记录CPU利用率和 I/O 等待
#cpu = true
# Turn on/off security. Off is currently the default
# 是否以安全认证方式运行,默认是不认证的非安全方式
#noauth = true
#auth = true
# Verbose logging output.
# 详细记录输出
#verbose = true
# Inspect all client data for validity on receipt (useful for
# developing drivers)用于开发驱动程序时的检查客户端接收数据的有效性
#objcheck = true
# Enable db quota management 启用数据库配额管理,默认每个db可以有8个文件,可以用quotaFiles参数设置
#quota = true
# 设置oplog记录等级
# Set oplogging level where n is
# 0=off (default)
# 1=W
# 2=R
# 3=both
# 7=W+some reads
#oplog = 0
# Diagnostic/debugging option 动态调试项
#nocursors = true
# Ignore query hints 忽略查询提示
#nohints = true
# 禁用http界面,默认为localhost:28017
# Disable the HTTP interface (Defaults to localhost:27018).这个端口号写的是错的
#nohttpinterface = true
# 关闭服务器端脚本,这将极大的限制功能
# Turns off server-side scripting. This will result in greatly limited
# functionality
#noscripting = true
# 关闭扫描表,任何查询将会是扫描失败
# Turns off table scans. Any query that would do a table scan fails.
#notablescan = true
# 关闭数据文件预分配
# Disable data file preallocation.
#noprealloc = true
# 为新数据库指定.ns文件的大小,单位:MB
# Specify .ns file size for new databases.
# nssize = <size>
# Accout token for Mongo monitoring server.
#mms-token = <token>
# mongo监控服务器的名称
# Server name for Mongo monitoring server.
#mms-name = <server-name>
# mongo监控服务器的ping 间隔
# Ping interval for Mongo monitoring server.
#mms-interval = <seconds>
# Replication Options 复制选项
# in replicated mongo databases, specify here whether this is a slave or master 在复制中,指定当前是从属关系
#slave = true
#source = master.example.com
# Slave only: specify a single database to replicate
#only = master.example.com
# or
#master = true
#source = slave.example.com
日常操作命令:
1)登录和退出
默认bind绑定的ip是127.0.0.1以及端口27017
mongo
mongo 127.0.0.1:27.17
绑定固定ip,比如bind_ip=168.133.142.11
mongo 168.133.142.11:27017
连接某个库
mongo ip:port/库名 -u用户名 -p密码
>show collections
mongodb会自动连接一个名为test的库,如果该库不存在,自动创建
关于命令的操作
>show dbs
查看服务器上的数据库
>use syp;
mongo中,db代表当前使用的数据库,db从test变成syp,如果没有syp,就会创建
并且不插入数据的话,该库也创建不了。
>show collections
查看当前数据库的集合
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
创建数据库
>use syp;
>show dbs;
>db.syp.insert({"name":"testdb"})
>show dbs
删除数据库
>db.dropDatase()
>show dbs
查看当前数据库
>db
>db.getName();
当删除数据test后,当前的db还是指向它,只有当切换数据库后,xxx才能消失。
>use test1
>db
>show dbs
修复当前库
>db.repairDatabase();
查看当前数据库状态
>db.stats();
当前db版本
>db.version();
查看当前db的链接机器地址
>db.getMongo();
从指定主机上克隆数据库
db.cloneDatabase("192.168.133.143");
从指定的机器上复制指定数据库数据到某个数据库
将本机的master_slave数据复制到wangshibo数据库中
>db.copyDatabases("master_slave","wangshibo","127.0.0.1");
collection操作
新建collection
>db.createCollection("hello")
>show collections
直接向一个不存在的collection中插入数据也能创建一个collection
>db.hello2.insert({"name":"lfqy"})
>show collections
删除collection
>db.Hello.drop()
ture 返回true说明删除成功,返回false说明删除失败
重命名collection
>show clooections
>db.hello2.renameCollection("Hello")
>show collections
建立索引在HELLO集合上,建立对ID字段的索引,1代表升序
>db.HELLO.ensureIndex({ID:1})
Record级别的操作
插入操作:
向user集合中插入两条记录:
>db.user.insert({'name':'GalGadot','gender':'female','age':28,'salary':11000})
>db.user.insert({'name':'Mike','gender':'female','age':28,'salary':1000})
用save完成类似的插入操作
>db.user.save({'name':'jim','gender':'male','age':32,'salary':8000})
查找操作
查找集合中的所有记录
>db.user.find()
查找集合中符合条件的记录
(1)单一条件
查询age为26的数据
>db.user.find({"age":26})
查询salary大于7000的数据
>db.user.find({salary:{$gt:7000}})
查询name中包含‘ent’的数据
>db.user.find({name:/ent/})
查询name中以G开头的数据
>db.user.find({name:/^G/})
查询name中以G结尾的数据
>db.user.find({name:/$G/})
(2)多条件“与”
查询age小于30,salary大于7000的数据
>db.user.find({age:{$1t:30},salary:{$gt:7000}})
(3)多条件“或”
查询age小于30,或者salary大于1000的记录
>db.user.find({$or:[{salary:{$gt:1000}},{age:{$1t:30}}]})
(4)查询第一条记录
将上面的find替换成findOne
(5)查询user集合中的name,age,salary字段
>db.user.find({},{name:1,age:1,salary:true})
1表示显示此列的意思,也可以用true表示
>db.user.find({},{name:1,age:true,salary:1})
(6)查询指定字段的数据,并去掉重复数据
>db.user.distinct('gender')
对查询结果集的操作
提供了pretty print工具,db.collection.pretty()或者db.collection.forEach(printjson)
>db.user.find().pretty()
指定结果集显示的条目
显示结果集中的前3条记录
>db.user.find().limit(3)
查询第一条以后的所有数据
>db.user.find().skip(1)
查询跳过前两条以后的数据
>db.user.find().skip(2)
对结果集升序
>db.user.find().sort({salary:1})
降序
>db.user.find().sort({salary:-1})
统计集合中所有的记录条数
>db.user.find().count()
查询符合条件的记录数
查询salary大于4000或者大于10000的记录数
>db.user.find({$or:[{$lt:4000}},{salary:{$gt:10000}}}]}).count()
###################################################
删除操作
删除整个集合中的所有数据
>db.wangshibo.find()
>db.wangshibo.remove({})
>db.wangshibo.find()
remove()函数接受一个查询文档作为可选参数来有选择性的删除符合条件的文档
不会删除集合本身,原有的索引页不会被删除。
删除文档是永久的,不能撤销,也不能恢复。
drop()是把集合相关的信息整个删除(包括索引)
删除集合中符合条件的所有记录
>db.user.find()
>db.user.remove({name:'GalGadot'})
>db.user.find()
删除集合中符合条件的一条记录
>db.user.find()
>db.user.remove({salary :{$1t:30000},1})
>db.user.find()
也可以将命令逗号后的1改成true
更新操作:
赋值更新:db.collection.update(criteria,objNew,upsert,multi)
criteria:update的查询条件,类似sql update查询内where后面的
objNew:update的对象和一些更新的操作符如$,$inc...等,可以理解为sql update查询内set后面的
upsert:如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入
multi:mongodb默认是false,只更新找到的第一条记录,如何参数是true,
就把条件查出来多条记录全部更新
>db.user.find()
>db.user.update({name:'huihui'},{$set:{age:23}},false,true)
>db.user.find()
>db.user.update({name:'lfqy1'},{$set:{age:23}},true,true)
>db.user.find()
增值操作
>db.user.find()
>db.user.updata({gender:'female'},{$inc:{salary:50}},false,true)
>db.user.find()
mongodb的安装和sql操作的更多相关文章
- mongodb的安装与简单操作
MongoDB中文社区:http://www.mongoing.com 数据库的使用场景 SQL(关系型数据库):MySQL.SQLServer --->磁盘操作 1.高度事务性的场景 ...
- MongoDB的安装及CURD操作
MongoDB的下载地址:http://www.mongodb.org/downloads MongoDB有32bit和64bit两个版本,32bit只能存放2GB数据.我们选择64bit版进行下载. ...
- MongoDB的安装与python操作MongoDB
一.安装MongoDB 因为我个人使用的是windows,就只记录下windows下的安装 1.下载安装 就是官网,下载msi,选个路径安装 2.配置 看见别的地方说需要手动在bin同级目录创建dat ...
- mongodb数据库安装及常见操作
客户端和服务端的安装 # rpm -ivh mongo-10gen-2.4.6-mongodb_1.x86_64.rpm mongo-10gen-server-2.4.6-mongodb_1.x86_ ...
- 【mongoDB基础篇①】安装与常用操作语句
简述 mongoDB与redis同为noSql数据库,但是redis为kv数据库(key/value),而mongoDB为文档型数据库存储的是文档(Bson->json的二进制化).内部执行引擎 ...
- python操作三大主流数据库(7)python操作mongodb数据库①mongodb的安装和简单使用
python操作mongodb数据库①mongodb的安装和简单使用 参考文档:中文版:http://www.mongoing.com/docs/crud.html英文版:https://docs.m ...
- MongoDB的安装配置、基本操作及Perl操作MongoDB
MongoDB的安装配置.基本操作及Perl操作MongoDB http://www.myhack58.com/Article/60/63/2014/42353.htm
- mongodb 操作语句与sql操作语句对比
上行:SQL 操作语句 下行:Mongo 操作语句 CREATE TABLE USERS (a Number, b Number) db.createCollection("mycoll&q ...
- MongoDB的安装与设置MongoDB服务
Mongo DB 是目前在IT行业非常流行的一种非关系型数据库(NoSql),其灵活的数据存储方式备受当前IT从业人员的青睐.Mongo DB很好的实现了面向对象的思想(OO思想),在Mongo DB ...
随机推荐
- 【mydigitallife.info】如何禁用Aero窗口自动最大化
Go to Control Panel. Click on Ease of Access link or Ease of Access Center icon. Select Change how y ...
- World Wind Java开发之六——解析shape文件(转)
http://blog.csdn.net/giser_whu/article/details/41647117 最近一直忙于导师项目的事情了,几天没更新了,昨天和今天研究了下WWJ解析shp文件的源代 ...
- Spark的基本概念及工作原理
Spark作业的基本概念 -Application:用户自定义的Spark程序,用户提交后,Spark为App分配资源将程序转换并执行. -Driver Program:运行Application的m ...
- java算法面试题:设计一个快速排序。双路快速排序,简单易于理解。
package com.swift; import java.util.ArrayList; import java.util.Collections; import java.util.Compar ...
- D-bus交叉编译
在嵌入式中如果需要Qt系统支持U盘插拔,则需要Qt支持D-bus. D-bus的交叉编译依赖expat库,此库为XML解析库. 交叉编译expat库: #./configure --host=XXX ...
- Redis常用诊断命令
1.info 命令查看redis信息,可以指定要查看的section名 sections:Server,clients,memory,persistence,stats,replication,cpu ...
- Nginx配置根据客户端设备转发
#user nobody; worker_processes ; #error_log logs/error.log; #error_log logs/error.log notice; #error ...
- SourceTree 跳过登录注册,直接使用
SourceTree下载安装后,运行程序会要求你登录或注册账号才能使用, 然而登录或注册基本都收不到服务器的响应 (在国外嘛,安全起见),于是卡在此处无法使用了. 下面就来介绍一下跳过这尴尬环节的方法 ...
- 【php】session_start 报 no such file
如果是yum安装修改php-fpm.conf 里面的 session.save_path 如果是编译的,修改php.ini 的session.save_path (此条未测试)
- Scrapy-redis分布式爬虫爬取豆瓣电影详情页
平时爬虫一般都使用Scrapy框架,通常都是在一台机器上跑,爬取速度也不能达到预期效果,数据量小,而且很容易就会被封禁IP或者账号,这时候可以使用代理IP或者登录方式爬,然而代理IP很多时候都很鸡肋, ...