mongodb word 笔记
来源:互联网 发布:sql union join的区别 编辑:程序博客网 时间:2024/06/04 19:18
安装:
下载包解压bin
创建一个data文件
进入cmd 用cd进入到bin目录下
运行: mongod --dbpath e:\star\mongodb\data 开启数据库
命令链接数据库
当运行完上边的指令开启完数据库后。再打开一个cmd 到bin
Mongo 127.0.0.1:27017
//链接本地端口的数据库 也可以链接远程的。链接本地时可不用写地址
这时运行的是默认的test数据库。我们肯定是要运行自己的数据库的
Use databasename //运行此命令切换或创数据库
这时才能用查询等 命令
服务器开始用户验证
1、需要创建一个mongodb.conf,介意放mongodb文件夹下。它是用来配置起动服务的。
2、配置
##store data here
dbpath=E:\star\mongodb\data //数据库地址
port=27017 //端品
##all output go here
logpath=E:\star\mongodb\log\mongo.log//日志地址,需要有logo文件夹才可
logappend=true //日志输出方式
auth=true//启用验证
//当然mongodb还有很多启动参数。
3、通过conf启动:cmd到bin目录下 运行
Mongod -config conf的目录,可以是相对也可以是绝对地址.
4、cmd命令访问数据库,还是和原先一样mongo user databasename
5、通过mongoVUE 链接:这时就需要配置用户名和密码了。
6、Node mongoose 链接
以前直接mongoose.connect("mongodb://localhost/nodejs")就可以了
但现在需要:
mongoose.connect('mongodb://'+db.user+':'+db.pwd+'@localhost/nodejs')
补充:要开启用户验证,先需要创建用户。
数据库操作命令
Show tables //显示所有表
Show collections //同上
show dbs //打印出所有数据库和使用大小
db.getName() //查看当前使用的数据库
db.repairDatabase() //修复数据库
db.copyDatabase(‘name’,’temp’) /拷贝数据库
db.copyDatabase(‘mydb’,’temp’,’127.0.0.1’) //本地mydb数据库数据复制到temp数据库中
db.dropDatabase() //删除数据库
db.printReplicationInfo() //查看主从复制状态
db.cloneDatabase(‘127.0.0.1’) //从指定的服务器数据库克隆数据到当前数据库
db.stats() //显示当前db状态
db.version() //当前db版本
db.getMongo() //查看当前db的地址和端口
db.killOp()//停止(杀死)在当前库的当前操作
数据库用户操作
db.addUser(‘name’,’pwd’,bool) //增加或修改用户 bool 是否只读
db.system.users.find() //查看所有用户
Show users // 查看所有用户
db.auth(‘name’,’pwd’) //用户证认判断是否正确
db.removeUser(‘name’) //删除用户
Collection 操作
db.coll.remove() //删除所有记录
db.createCollection(‘name’,{}) //创建一个集合
db.getCollectionNames() //得到所有cell名字
db.printCollectionStats() //查看 所有coolection 状态
db.coll.help() //集合帮助
db.coll.count() //数据条数
db.coll.dataSize() //空间大小
db.coll.totalSize() //总大小
db.coll.storageSize()//储存空间大小
db.coll.renameCollection(‘newname’)//coll重命名
Db.coll.drop()//删除当前coll
Db.coll.distince(‘colname’) //显示指定列的所有值去掉重复的
数据库导出导入
需要先启动数据库,进到bin:
Mongodump -d nodejs -o e:/ //导出nodejs数据库到e:/下
mongodump -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -o 文件存在路径
如果没有用户谁,可以去掉-u和-p。
如果导出本机的数据库,可以去掉-h。
如果是默认端口,可以去掉--port。
如果想导出所有数据库,可以去掉-d。
数据库还原
mongorestore -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 --drop 文件存在路径
mongorestore -d tank /home/zhangy/mongodb/tank/ #tank这个数据库的备份路径
工具:
print()//打印数据
printjson()打印对象转换成字符串
mongo 命令
语法:
1:db.admin.update(条件对象,修改对象,upsert,multi)
upsert: bool类型,如果不存在记录,是否插入,true是false否,默认false
multi:bool类型,是否更新查出的所有数据,默认false只更新第一条
db.admin.save(obj)
如果命令中有相同_id的obj就更新,没有就插入
查看聚集集合基本信息
db.admin.count()//返回admin的条数
db.admin.dataSize()//返回集合占用空间大小
db.admin.stats()//返回集合状态
db.admin.getDB()//返回当前集合所在数据库名
db.admin.totalSize()//返回聚集集合总大小
db.admin.storageSize()//返回聚集集合储存空间大小
db.admin.renameCollection('admins')//修改集合名
db.admin.drop()//删除当前集合
db.createCollection('a')//创建集合a
聚集集合查询
db.admin.distinct('name')//过滤掉相同的name字段,返回数组
db.admin.find().sort({name:1})//按name 升序
db.admin.find().limit(2) //返回前2条数据
db.admin.find().skip(2)//查询2条以后的数据
索引
游标
var cursor=db.admin.find();
while(cursor.hasNext()){
print(cursor.next())
}
db.admin.find().forEach(function(x){
print(x);
}
进入bin目录,输入mongo ,回车,就可以使用以下命令了
1:配置当前数据库
use 数据库名 //配置当前db访问的数据库
2:插入数据insert
db.admin.insert({name:'bb',pwd:'star'}) //向admin集合中插入文档
3:查询find
db.admin.find() //查询集合,返回符合的数据,默认返回所有
db.admin.find()[0].name //用[]下标来访问返回的第几行文档,用.nam来访问属性
db.admin.find({name:/b*/}) //条件以对象来写,可以用到正则
db.admin.findOne() //返回结果的第一条数据
4:更新update()
db.admin.update({name:'star'},post) //第一对象为限定条件,第二对象为新文档
当修改匹配了多个文档时会发生错误,因为_id每个文档都是唯一的
5:删除remove()
db.admin.remove({pwd:'33'}) // 删除pwd等于33的所有文档
db.admin.remove() //删除所有文档,保留集合和索引
6:db.getCllection('name') //当表名和保留名一至时,用getCollection来访问
7:$inc 用于数字增加,没有此属性会添加并赋值
db.admin.update(条件,{'$inc':{'num':3}})
//符合的文档的num属性都加上3没有此属性设置值为3
8:$set 用于指定属性的值,不存在创建,存在修改 可以改变值的类型,如以前是字符串可修改成数据
db.admin.update(条件,{'$set':{'book':'js'}}) //创建book 为js
9:$unset 删除属性,打印时就不会有此属性
db.admin.update(条件,{'$unset':{'book':1}}) //删除book属性
10: $push 数组添加
db.admin.update(条件,{'$push':{'book':'33'}}) //book数组push '33'
只能对已有的数据属性操作,没有属性会错误
$pushAll 一次添加多个值到数组
{'$pushAll':{'book':['11','22','33']}}
11:$addToset //数据添加时避免重复
db.admin.update(条件,{'$addToSet':{'book':'net'}})
db.admin.update(条件,{'$addToSet':{'book':{'$each':['net','bb']}}}) //添加多个数据
12:$pop //删除数据元素
db.admin.update(条件,{'$pop':{'book':-1}}) //-1删除头部第一条 1 删除最后一条
13:$pull //删除所有匹配的部分
db.admin.update(条件,{'$pull':{'book':'33'}}) //删除book数据中的33
$pullAll //一次删除多个匹配的值
{'$pullAll':{'book':['11','22]}}
14:数据定位修改
db.admin.update(条件,{'$inc':{'message.0.num':10}})
//把message数组中下标为0的对象的num增加10
有时查询的结果并不清楚下标是几,可以用$来表示当前结果的下标
15:save 修改数据
var po=db.admin.findOne();
po.num=10;
db.admin.save(po) //保存数据
第四章 查询
4.1指定返回的键
db.admin.find({},{'name':1,}) //返回name
db.admin.find({},{'book':0}) //不返回book
4.2查询条件( 一般写在属性的值中)
$lt: < $lte: <= $gt: > $gt3: >= $nc:不等于
$in:数组形式的或 $nin: 返回与数组中不匹配的(值必须为[])
$mod:[除数,余数] 某键除以除数,返回余数等于指定的值
$exists:true/false 用于判断键是否存在
db.admin.find({'num':{'$gt':3,'$lt':10}) //大于3 小于10
db.admin.find({'num':{'$ne':10.0})// num 不行于10.0
4.3or 查询
db.admin.find({'name':{'$in':['a','b'}}) //返回name为a 或b
//$in 用于检测字段的多个值,$in参数为数组,不可用于数组
db.admin.find({'name':{'$nin':['a','b'}}) //返回name 不等于a 和b 。
$in 能对单个键做or查询,想要找到name为a 或num为10,就要用到$or。or接受一个包含所有可能条件的数组作为参数.
db.admin.find({'$or':[
{'name':'a'},
{'num':3.0}
]})//返回name 为a或num 为3.0的值
$or 数组中的对象中的键可是为值,也可是条件对象
db.admin.find({'$or':[
{'num':10.0},
{'name':{'$in':['a','b']}}//在or数组对象中用到条件查询。
]})
4.4 $not(元条件)用在任何条件之上
db.admin.find({'name':{'$not':{'$in':['bb']}}})
not 不能直接在后边引用字符串,必须是一个条件的对象{'$in':['bb']} ,或一个正则:
db.admin.find({'name':{'$not':/b/i}})
如果想返回name 不等于bb用:
db.admin.find({'name':{'$ini':['bb']}})
4.5条件句的规则
查询中条件如'$lt'用在内层文档,更新中的$inc $set 用在外层文档
{'num':{'$lt':30}} {'$inc':{'num':3}}
条件句是内层文档的键,修改器则是外层文档的键。
一个键可以有多个条件,但不能对应多个更新修改器,
4.6特定于类型的查询
null 可以匹配键中的null,当没有此键时会匹配所有内容
db.admin.find({'num':null}) //返回num为null
db.admin.find({bb:null}) //当都没有bb键时返回所有
可以用$exists 来判断键是否存在
db.admin.find({bb:{'$in':[null],'$exists':true} }) //当有bb键时再判断是否值为 null
4.7正则
db.admin.find({'name':/bb/})
4.8查询数组
//单一:查询数据中有net 的返回
db.admin.find({'book':'net'})
//多一:查询包含net&& bb 的返回,用的是$all条件
db.admin.find({'book':{'$all':['net','bb']}})
//如果确定匹配也可以用
db.admin.find({'book':['net','bb']})
//匹配数组位数为指定值
db.admin.find({'book.1':'bb'})
//匹配数组长度 $size:数字 不可和$lt 比较大小一起用,
db.admin.find({'book':{'$size':3}})
//$slice 用于第二个参数,用来确定数组要显示的个数正数为前多少,负数为后多少。
{'$slice':[,index,length]) 二参:index 从第位下标后开始,length 返回的长度
db.admin.find({},{'book':{'$slice':2}})
4.9查询内嵌文档
可以用{'name.first':'star'} 或{'name':{'first':'star}}
$elemmatch 模糊命名条件用来部分指定匹配数组中的单个内嵌文档的限定条件,
{'message':{'$elemmath':{
'author':'star',
'score':{'$gte':5}
}}}
//返回留言为star,且数量大于等于5的返回。
4.10$where
- mongodb word 笔记
- word笔记
- MongoDB笔记
- MongoDB笔记
- MongoDB笔记
- MongoDB笔记
- mongodb笔记
- MongoDB 笔记
- MongoDB笔记
- mongodb笔记
- Mongodb笔记
- mongoDB笔记
- mongodb笔记
- mongodb笔记
- MongoDB笔记
- mongodb 笔记
- Mongodb笔记
- mongodb笔记
- PostgresSQL数据库函数
- Spring中任务调度cronExpression配置说明
- mysql中的if条件语句用法
- css生成斜纹样式
- 2016.02.01技术成长思考
- mongodb word 笔记
- 自己动手构建的超级计算机-----建立树莓派集群
- leetcode
- 11g单实例数据库打最新11.2.0.4.160119 PSU补丁记录
- TensorFlow 基本使用
- angular中运用$cacheFactory服务时候报错
- PullToRefreshListView的漏洞
- 利用kali 的arp欺骗获取靶机的图片方法与arp断网
- Protocol Buffer技术详解(C++实例)