MongoDB简单使用

在启用mongodb服务的时候,会有三个警告:

第一个警告: Linux内存动态分配,mongo占用内存较大,官方推荐关闭动态分配所以警告

第二个警告:  默认分配给mongo的进程和文件数量限制过低,需要重新分配

第三个警告: 我们用root权限启动mongo,数据不安全.用--auth来创建用户,来认证

简介:

1.类似json格式, 键值对形式,每一条叫文档, 2.不用事前创建数据库,给数据就会自动创建 3.mongoDB必须是utf-8

启动mongo命令: 

1.sudo mongod   是启用服务的命令 

 

2.# 启动mongod,并指定数据存储目录(目录必须存在,且有读写权限)

sudo mongod --dbpath=/xxxxx/xxxx

 

3.使用守护进程方式启动,--fork,就必须启动logpath

sudo mongod--logpath=/data/db/mongodb.log --fork

 

4.使用用户认证方式启动

sudo mongod --auth

进入shell

命令:mongo---use admin---db.createUser({user: 'python', pwd:'python', roles: ['root']})

登录db.auth('python','python')

换个用户名,可以设置权限roles:[{role: "read", db: ''test'}]

各个数据库的默认端口拓展

MongoDB端口27017

redis端口 6379

mysql端口 3306

mongo进入客户端

7. 查看当前数据库下所有的用户信息.

> db.system.users.find()

show collections

13. 删除bigcat用户

> db.dropUser("bigcat")

MongoDB的服务器统计,需要在MongoDB客户端键入命令db.stats()

查看当前数据库名

db

查看所有数据库名

show dbs

切换数据库,没有暂时不创建,插入数据时数据库才被创建

use 数据库名

删除数据库

db.dropDatabase()

集合命令

db.createCollection(name)--->向不存在的集合第一次添加数据时,集合也被创建

>db.createCollection("stu", {capped : true, size :6142800} )

----参数capped:默认值为false表示不设置上限,值为true表示设置上限

----参数size:当capped值为true时,需要指定此参数,表示上限大小,当文档达到上限时,会将之前的数据覆盖,单位为字节

语法 :

查看当前数据库的集合

show collections

删除集合命令

db.stu.drop()

插入

db.集合名.insert({})

insert添加相同_id的数据, 就会出错

db.集合名.save({})

save = insert + update

语法与insert 相同,相同_id就会修改

修改/添加

db.stu.update({修改条件},{修改后的内容})默认修改匹配到的第一条文档全部数据

update({修改条件},{$set:{age:30}})只修改文档age30,其他字段不变,默认修改第一个匹配到的文档

db.stu.update({},{$set: {age = 100}})修改所有文档中的age100,默认修改第一个匹配到的文

匹配所有文档的:

db.stu.update({},{$set: {age = 100}},{multi:true}) 红色的参数就是让匹配所有文档

查询:

db.stu.find() 查询所有符合匹配条件的文档

db.stu.findOne() 查询第一个符合匹配的文档

db.stu.find({age: 18}).pretty()格式化输出

比较运算符

 

大于小于,大于等于,小于等于,默认是等于

 

db.stu.find({age: {$lt : 18}}) 小于18
 
逻辑运算符
默认是and,表示两个都满足
db.stu.find({age:18, gender: false})
or表示满足任何一个条件即可,每一个条件都要是单独字典
db.stu.find({$or: [{age:{$lt: 25}}, {gender: False}]})
 
or 和 and 配合使用
db.stu.find({age: {$in : [16, 18,20]}})
 
支持正则
db.stu.find({name: /段/}) 斜杠里就是正则
db.stu.find({name : {$regex: '黄', $options: :"$i"}})
忽略大小写修饰符
$options: :"$i"
 
自定义查询:
db.stu.find($where : function(){return this.age < 20})
 
db.stu.find().limit(3)显示前三个
skip(2)跳过前两个
可以组合使用,
 
投影
表明显示哪些数据
db.stu.find({}, {name: 1})1,true表示显示,0,false表示不显示,_id是默认显示的
 
排序
find().sort({age: 1}) 1是升序,-1是降序
 
统计个数
db.stu.find({条件}).count()
也可以
db.stu.count({条件})
 
消除重复
db.stu.distinct('age', {})
只会返回'age'的字段,{}查询的条件,返回值是列表
 

 

各个参数

"db":"test",表示当前是针对"test"这个数据库的描述。想要查看其他数据库,可以先运行$ use datbasename

"collections":3,表示当前数据库有多少个collections.可以通过运行show collections查看当前数据库具体有哪些collection.

"objects":267,表示当前数据库所有collection总共有多少行数据。显示的数据是一个估计值,并不是非常精确。

"avgObjSize":623.2322097378277,表示每行数据是大小,也是估计值,单位是bytes

"dataSize":16640,表示当前数据库所有数据的总大小,不是指占有磁盘大小。单位是bytes

"storageSize":110592,表示当前数据库占有磁盘大小,单位是bytes,因为mongodb有预分配空间机制,为了防止当有大量数据插入时对磁盘的压力,因此会事先多分配磁盘空间。

"numExtents":0,没有什么真实意义

"indexes":2,表示system.indexes表数据行数。

"indexSize":53248,表示索引占有磁盘大小。单位是bytes

"ok":1,表示服务器正常

SQL和MongoDB对比

SQL术语/概念

MongoDB术语/概念

解释/说明

database

database

数据库

table

collection

数据库表/集合

row

document

数据记录行/文档

column

field

数据属性/字段()

index

index

索引

primary key

primary key

主键,MongoDB默认自动将_id字段设置为主键,可以手动设置

以上是总结

原文地址:https://www.cnblogs.com/ppansj/p/7987994.html