mongoDB(2)--mongoDB的常用命令

默认设置后台启动:

vi mongodb.cfg 创建配置文件,配置启动信息

dbpath=/root/mongodb/data
logpath=/root/mongodb/log/mongodb.log
fork=true
storageEngine=mmapv1指定引擎  

[[email protected] mongodb]# mongod -f mongodb.cfg  命令指定配置文件启动

ps -aux | grep mongod 查看一下mongod当前进程

[[email protected] mongodb]# ps -aux | grep mongod
Warning: bad syntax, perhaps a bogus ‘-‘? See /usr/share/doc/procps-3.2.8/FAQ
root      4722  0.2  4.1 249888 42724 ?        Sl   07:07   0:00 mongod -f mongodb.cfg
root      4755  0.0  0.0   4356   724 pts/1    S+   07:11   0:00 grep mongod

常用mongodb命令:

2.3、MongoDB 常用命令
1、创建数据库
use testdb
2、创建集合
db.t_member.insert({name:"zhaomin",age:23})
3、查询
db.t_member.find()
db.t_member.findOne()
4、修改
#不会影响其他属性列 ,主键冲突会报错
db.t_member.update({name:"zhaomin"},{$set:{age:18}})
#第三个参数为 true 则执行 insertOrUpdate 操作,查询出则更新,没查出则插入,
或者
db.t_member.update({name:"zhaomin"},{$set:{age:18}},true)
5、删除
#删除满足条件的第一条 只删除数据 不删除索引
db.t_member.remove({age:1})
#删除集合
db.t_member.drop();
#删除数据库
db.dropDatabase();
6、查看集合
show collections
7、查看数据库
show dbs
8、插入数据
db.t_member.insert() #不允许键值重复
db.t_member.save() #若键值重复,可改为插入操作
9、批量更新
db.t_member.update({name:"zhaomin"},{$set:{name:"zhanmin11"}},false,t
rue);
批量操作需要和选择器同时使用,第一个 false 表示不执行 insertOrUpdate 操作,第二个 true 表示
执行批量
10、更新器使用$set : 指定一个键值对,若存在就进行修改,不存在则添加
$inc :只使用于数字类型,可以为指定键值对的数字类型进行加减操作:
db.t_member.update({name:"zhangsan"},{$inc:{age:2}})
执行结果是名字叫“zhangsan”的年龄加了 2
$unset : 删除指定的键
db.t_member.update({name:"zhangsan"},{$unset:{age:1}})
$push : 数组键操作:1、如果存在指定的数组,则为其添加值;2、如果不存在指定的数组,则
创建数组键,并添加值;3、如果指定的键不为数组类型,则报错;
$addToSet : 当指定的数组中有这个值时,不插入,反之插入
#则不会添加到数组里
db.t_member.update({name:"zhangsan"},{$addToSet:{classes:"English"}})
;
$pop:删除指定数组的值,当 value=1 删除最后一个值,当 value=-1 删除第一个值
#删除了最后一个值
db.t_member.update({name:"zhangsan"},{$pop:{classes:1}})
$pull : 删除指定数组指定的值
#$pullAll 批量删除指定数组
db.persons.update({name:"zhangsan"},{$pull:{classes:"Chinese"}})
#若数组中有多个 Chinese,则全删除
db.t_member.update({name:"zhangsan"},{$pull:{classes:["Chinese"]}})
$ : 修改指定数组时,若数组有多个对象,但只想修改其中一些,则需要定位器:
db.t_member.update({"classes.type":"AA"},{$set:{"classes.$.sex":"male
"}})
$addToSet 与 $each 结合完成批量数组更新操作
db.t_member.update({name:"zhangsan"},{$set:{classes:{$each:["chinese"
,"art"]}}})
runCommand 函数和 findAndModify 函数
runCommand({
findAndModify:"persons",

query:{查询器},
sort:{排序},
update:{修改器},
new:true 是否返回修改后的数据
});
runCommand 函数可执行 mongdb 中的特殊函数
findAndModify 就是特殊函数之一,用于返回执行返回 update 或 remove 后的文档
例如:
db.runCommand({
findAndModify:"persons",
query:{name:"zhangsan"},
update:{$set:{name:"lisi"}},
new:true
})
12、高级查询详解
db.t_member.find({},{_id:0,name:1})
第一个空括号表示查询全部数据,第二个括号中值为 0 表示不返回,值为 1 表示返回,默认情况下若不
指定主键,主键总是会被返回;
db.persons.find({条件},{指定键});
比较操作符:$lt: < $lte: <= $gt: > $gte: >= $ne: !=
12.1、查询条件
#查询年龄大于等于 25 小于等于 27 的人
db.t_member.find({age:{$gte:25,$lte:27}},{_id:0,name:1,age:1})
#查询出所有国籍不是韩国的人的数学成绩

db.t_member.find({country:{$ne:"韩国"}},{_id:0,name:1,country:1})
12.2、包含与不包含(仅针对于数组)
$in 或 $nin
#查询国籍是中国或美国的学生信息
db.t_member.find({country:{$in:["China","USA"]}},{_id:0,name:1:countr
y:1})
12.3、$or 查询
#查询语文成绩大于 85 或者英语大于 90 的学生信息
db.t_member.find({$or:[{c:{$gt:85}},{e:{$gt:90}}]},{_id:0,name:1,c:1,e:1})
#把中国国籍的学生上增加新的键 sex
db.t_member.update({country:"China"},{$set:{sex:"m"}},false,true)
#查询出 sex 为 null 的人
db.t_member.find({sex:{$in:[null]}},{_id:0,name:1,sex:1})
12.4、正则表达式
#查询出名字中存在”li”的学生的信息
db.t_member.find({name:/li/i},{_id:0,name:1})
12.5、$not 的使用
$not 和$nin 的区别是$not 可以用在任何地方儿$nin 是用到集合上的
#查询出名字中不存在”li”的学生的信息
db.t_member.find({name:{$not:/li/i}},{_id:0,name:1})
12.6、$all 与 index 的使用
#查询喜欢看 MONGOD 和 JS 的学生
db.t_member.find({books:{$all:["JS","MONGODB"]}},{_id:0,name:1})
#查询第二本书是 JAVA 的学习信息
db.t_member.find({"books.1":"JAVA"},{_id:0,name:1,books:1})
12.7、$size 的使用,不能与比较查询符同时使用
#查询出喜欢的书籍数量是 4 本的学生

db.t_member.find({books:{$size:4}},{_id:0,name:1})
12.8、查询出喜欢的书籍数量大于 4 本的学生本的学生
1)增加 size 键
db.t_member.update({},{$set:{size:4}},false,true)
2)添加书籍,同时更新 size
db.t_member.update({name:"jim"},{$push:{books:"ORACL"},$inc:{size:1}
})
3)查询大于 3 本的
db.t_member.find({size:{$gt:4}},{_id:0,name:1,size:1})
12.9、$slice 操作符返回文档中指定数组的内部值
#查询出 Jim 书架中第 2~4 本书
db.t_member.find({name:"jim"},{_id:0,name:1,books:{$slice:[1,3]}})
#查询出最后一本书
db.t_member.find({name:"jim"},{_id:0,name:1,books:{$slice:-1}})
12.10、文档查询
查询出在 K 上过学且成绩为 A 的学生
1)绝对查询,顺序和键个数要完全符合
db.t_member.find({school:{school:"K","score":"A"}},{_id:0,name:1})
2)对象方式,但是会出错,多个条件可能会去多个对象查询
db.t_member.find({"school.school":"K","school.score":"A"},{_id:0,nam
e:1})
正确做法单条条件组查询$elemMatch
db.t_member.find({school:{$elemMatch:{school:"K",score:"A"}},{_id:0,n
ame:1})
db.t_member.find({age:{$gt:22},books:"C++",school:"K"},{_id:0,name:1,

age:1,books:1,school:1})
12.11、分页与排序
1)limit 返回指定条数 查询出 persons 文档中前 5 条数据:
db.t_member.find({},{_id:0,name:1}).limit(5)
2)指定数据跨度 查询出 persons 文档中第 3 条数据后的 5 条数据
db.t_member.find({},{_id:0,name:1}).limit(5).skip(3)
3)sort 排序 1 为正序,-1 为倒序
db.t_member.find({},{_id:0,name:1,age:1}).limit(5).skip(3).sort({age:
1})
注意:mongodb 的 key 可以存不同类型的数据排序就也有优先级
最小值->null->数字->字符串->对象/文档->数组->二进制->对象 ID->布尔->日期->时间戳->正则
->最大值
12.12、游标
利用游标遍历查询数据
var persons = db.persons.find();
while(persons.hasNext()){
obj = persons.next();
print(obj.name)
}
游标几个销毁条件
1).客户端发来信息叫他销毁
2).游标迭代完毕
3).默认游标超过 10 分钟没用也会别清除
12.13、查询快照
快照后就会针对不变的集合进行游标运动了,看看使用方法.

#用快照则需要用高级查询
db.persons.find({$query:{name:”Jim”},$snapshot:true})
高级查询选项
1)$query
2)$orderby
3)$maxsan:integer 最多扫描的文档数
4)$min:doc 查询开始
5)$max:doc 查询结束
6)$hint:doc 使用哪个索引
7)$explain:boolean 统计
8)$snapshot:boolean 一致快照
14.1、查询点(70,180)最近的 3 个点
db.map.find({gis:{$near:[70,180]}},{_id:0,gis:1}).limit(3)
14.2、查询以点(50,50)和点(190,190)为对角线的正方形中的所有的点
db.map.find({gis:{$within:{$box:[[50,50],[190,190]]}}},{_id:0,gis:1})
14.3、查询出以圆心为(56,80)半径为 50 规则下的圆心面积中的点
db.map.find({gis:{$with:{$center:[[56,80],50]}}},{_id:0,gis:1})
15、Count+Distinct+Group
15.1、count 查询结果条数
db.persons.find({country:"USA"}).count()
15.2、Distinct 去重
请查询出 persons 中一共有多少个国家分别是什么
#key 表示去重的键
db.runCommand({distinct:"persons",key:"country"}).values
15.3、group 分组
db.runCommand({ group:{
  ns:"集合的名字",
  key:"分组键对象",
  initial:"初始化累加器",
  $reduce:"分解器",
  condition:"条件",
  finalize:"组完成器"
  }})
分组首先会按照 key 进行分组,每组的 每一个文档全要执行$reduce 的方法,他接收 2 个参数一个是组
内本条记录,一个是累加器数据. 请查出 persons 中每个国家学生数学成绩最好的学生信息(必须在 90 以上)
db.runCommand({
group:{
ns:"persons",
key:{"country":true},
initial:{m:0},
$reduce:function(doc,prev){
if(doc.m>prev.m){
prev.m = doc.m;
prev.name = doc.m;
prev.country = doc.country;
}
},
condition:{m:{$gt:90}},
finalize:function(prev){
prev.m = prev.name+" comes from "+prev.country+" ,Math score is
"+prev.m;
}
}
})
15.4.函数格式化分组键
如果集合中出现键 Counrty 和 counTry 同时存在
$keyf:function(doc){
if(doc.country){
return {country:doc.country}
}
return {country:doc.counTry}
}
16、常用命令举例
16.1、查询服务器版本号和主机操作系统
db.runCommand({buildInfo:1})
16.2、查询执行集合的详细信息,大小,空间,索引等
db.runCommand({collStats:"persons"})
16.3、查看操作本集合最后一次错误信息
db.runCommand({getLastError:"persons"})
17、固定集合
17.1、特性
固定集合默认是没有索引的就算是_id 也是没有索引的
由于不需分配新的空间他的插入速度是非常快的
固定集合的顺是确定的导致查询速度是非常快的
最适合就是日志管理
17.2、创建固定集合
创建一个新的固定集合要求大小是 100 个字节,可以存储文档 10 个
db.createCollection("mycoll",{size:100,capped:true,max:10})
把一个普通集合转换成固定集合
db.runCommand({convertToCapped:"persons",size:1000})
17.3、对固定集合反向排序,默认情况是插入的顺序排序
db.mycoll.find().sort({$natural:-1})

 

MongoDB命令怎么学?
记住用help
有些人,自认为很聪明,他就回去猜(就会按自己的习惯去猜)

mongodb图形化工具---robomongo-0.9.0

创建新库,并往新表中插入一条数据

> use testdb
switched to db testdb
> db.member.insert({name:"lf",age:18.addr:"hunan chuangsha"});
2019-04-23T22:24:11.023+0800 E QUERY [js] SyntaxError: identifier starts immediately after numeric literal @(shell):1:32
> db.member.insert({name:"lf",age:18,addr:"hunan chuangsha"});
WriteResult({ "nInserted" : 1 })

循环插入60条数据

> for(var i=18;i<=60;i++){ db.member.insert({name:"lf",age:i,addr:"hunan chuangsha"});}

直接drop(),就这样没有了
不靠谱

定位:缓存而已(如果把安全性非常高数据库不靠谱)

原文地址:https://www.cnblogs.com/flgb/p/10759277.html

时间: 2024-08-04 10:20:01

mongoDB(2)--mongoDB的常用命令的相关文章

MongoDB基本概念和常用命令

MongoDB基本概念和常用命令 Mongo DB 是目前在IT行业非常流行的一种非关系型数据库(NoSql),其灵活的数据存储方式备受当前IT从业人员的青睐.Mongo DB很好的实现了面向对象的思想(OO思想),在Mongo DB中 每一条记录都是一个Document对象.Mongo DB最大的优势在于所有的数据持久操作都无需开发人员手动编写SQL语句,直接调用方法就可以轻松的实现CRUD操作. NoSQL数据库与传统的关系型数据库相比,它具有操作简单.完全免费.源码公开.随时下载等特点,并

mongodb用户权限操作常用命令

由于公司还有几台mongodb的数据库,需要开放某部分权限给外部人员使用,所以这里记录一下,仅供需要的朋友使用. 1. MongoDB常用命令 [[email protected] ~]# ps -ef|grep mongod [[email protected] ~]# mongo --host=127.0.0.1 --port=27017 MongoDB shell version: 3.2.7 connecting to: 127.0.0.1:27017/test > show dbs  

MongoDB与Mysql常用命令解释

原文 本文旨在介绍MongoDB,Mysql的常用命令:将MongoDB 和传统的关系型数据库的常用命令对照起来学习,更加便于记忆和理解. mongodb与mysql命令对比 MongoDB是由数据库(database/repository).集合(collection).文档对象(document)三个层次组成.MongoDB中集合对应关系型数据库里的表,但是集合中没有列.行和关系的概念,这体现了模式自由的特点. 传统的关系数据库一般由数据库(database).表(table).记录(rec

mongoDB常用命令与安全加固

一.介绍 MongoDB 是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案.MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型.Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引.它的特点是高

MongoDB常用命令

成功启动MongoDB后,再打开一个命令行窗口输入mongo,就可以进行数据库的一些操作. 1.输入help可以看到基本操作命令: show dbs:显示数据库列表 show collections:显示当前数据库中的集合(类似关系数据库中的表) show users:显示用户 use <db name>:切换当前数据库,这和MS-SQL里面的意思一样 db.help():显示数据库操作命令,里面有很多的命令 db.foo.help():显示集合操作命令,同样有很多的命令,foo指的是当前数据

(转)mongodb常用命令脚本化-自动化运维

mongodb常用命令脚本化-自动化运维 把一些运维中常用到的mongodb命令写成shell脚本,极大的方便了维护 1 设置副本集 #!/bin/bash#mongodb 进入client 并use admincd /usr/mongodb/binMongoDB='./mongo 192.168.1.7:37017'$MongoDB <<EOFuse adminrsconf={        "_id" : "Job001",        "

MongoDB 常用命令总结

MongoDB 常用命令总结 简单的的增删改查数据 在查询结果中指定显示或者不显示某个字段 例如,我们希望在 lessons 集合中查找所有数据,但是不希望在返回结果中包含 slides 字段:因为 slides 是一个巨长的以 base64 表示的图片数组,影响查询结果的阅读. 那么我们就可以在 query object 后面跟上一个参数.如下: db.lessons.find({}, {slides:0}); 同样也可以明确指定显示哪些字段: db.bios.find( { }, { nam

[整理]MongoDB 常用命令总结

MongoDB 常用命令总结 简单的的增删改查数据 在查询结果中指定显示或者不显示某个字段 例如,我们希望在 lessons 集合中查找所有数据,但是不希望在返回结果中包含 slides 字段:因为 slides 是一个巨长的以 base64 表示的图片数组,影响查询结果的阅读. 那么我们就可以在 query object 后面跟上一个参数.如下: db.lessons.find({}, {slides:0}); 同样也可以明确指定显示哪些字段: db.bios.find( { }, { nam

MongoDB常用命令及例子详细介绍(三)

常用命令,及其高级命令使用介绍 一:增删改查的高级应用详细介绍: 增:***插入的时候c1不在的话将自动创建*** 不管插入那条记录都会自动给带个值id 自增主键唯一 insert 和 save(当id冲突是则修改,否则插入) 一:id主键不冲突的情况没区别 db.c1.insert({name:"leyangjun"}); db.c1.insert({name:"leyangjun"}); insert插入的值id都是唯一的,不会主键id冲突 db.c1.save

MongoDB入门教程(包含安装、常用命令、相关概念、使用技巧、常见操作等)【转载】

一.安装和配置 MongoDB 的官方下载站是 http://www.mongodb.org/downloads,可以去上面下载最新的安装程序 Windows 平台的安装 ● 步骤一: 下载 MongoDB     点击上方官方下载地址, 并下载 Windows 版本 ● 步骤二: 设置 MongoDB 程序存放目录     下载完成后, 解压到自定义文件夹,例: D:\mongodb\ ● 步骤三: 设置数据文件存放目录     在 D:\mongodb\ 目录下创建 db 和 logs 文件