MongoDB数据库

Mongodb

是一个非关系型数据库 存储形式为键值对 水平扩展很容易 常做为缓存数据库来使用python

Mongodb的存储文档称之为 BSON 相似json对象 字段值能够包含其余的文档 、数组 以及文档数组mysql

MongoDB和mysql的概念解析
sql概念 mongodb的概念 解释/说明
database database 数据库
table collection 表/集合
row document 行/文档
column field 列/域
table join 表关联
primary key primary key 主键手动添加/自动建立

1、进入mongodb数据库

(1) cd mongo的bin目录

(2) 输入 启动服务 并选择建立数据库的位置

mongod.exe --dbpath=D:\db

(3) 再打开一个终端

cd mongodb的bin目录sql

mongo.exemongodb

(4) 开放端口让其余人链接,须要关闭防火墙

mongod.exe --bind_ip 0.0.0.0数据库

(5) 链接带密码的mongodb

mongo ip:port/database -u username -p password
mongo database --host x.x.x.x --port 31935 -u username -p passwordjson

2、数据库的操做

(1) 查看全部数据库

show dbs数组

(2) 建立/切换数据库

use 数据库名缓存

(3) 查看当前所在的数据库

db.getName()code

(4) 建立集合
  1. db.createCollection(集合名)

    db.createCollection('user')对象

  2. db.集合名.insert(文档)

    db.goods.insert({"goodsname":"牛奶"})

(5) 查看全部的集合

show collections

(6) 删除集合

db.collection_name.drop()

若是遇到命名奇怪的集合,如数字名字的集合没法删除,可使用以下
db.getCollection('123').drop()

注意:

mongodb区分大小写

(7) 修改集合名字

db.old_name.renameCollection("new_name")

3、数据的添加 INSERT

(1) insert 插入一条文档

db.集合名.insert({文档})

db.user.insert({'name':"张三",'age':18})

(2) insert插入多条文档

列表中存放多条文档

db.user.insert([{'name':'李四','age':20},{'name':'王五','age':25}])

3.XX 新的插入文档

(1) 插入一条文档

db.collection.insertOne()

db.user.insertOne({"name":"赵六","age":30})

(2) 插入多条文档

db.collection.insertMany()

db.user.insertMany([{"name":"赵六","age":30},{"name":'王五',"age":22}])

插入多条文档 无论是insert仍是insertMany 都须要使用列表

insertMany 若是不适用列表 则报错

insert 插入多条不适用列表 则插入成功数据为第一条文档

4、update修改

主体结构

db.collection.update(

​ <query>, 查询的条件

​ <update>, 要更改的东西

​ {

​ <upsert> bool值 若是修改的数据查询不到 当前数据是否做为新数据插入 默认Flase 不插入

​ <multi> bool 值 若是匹配到多条 默认是更改一条 Flase 改成True则所有更改

​ }

)

update: &dollar;set &dollar;inc 俩个更新操做符

$set 直接修改

$inc 累加修改

实例

不使用更新操做符 会将文档的内容除了_id之外的内容替换成当前update的内容

db.user.update({"name":"张三"},{"age":38})

使用更新操做符号 &dollar;set 将年龄直接修改成30 其他当前文档的内容不会发生改变

db.user.update({"name":"李四"},{$set:{"age":30}})

使用更新操做符号 &dollar;inc 将年龄值累加修改30 其他当前文档的内容不会发生改变

db.user.update({"name":"李四"},{$inc:{"age":30}})

upsert参数的使用

db.user.update({"name":"张三"},{$set:{"age":30}},true)

{ "_id" : ObjectId("5b0f68068829170dea936f21"), "name" : "张三", "age" : 30 }
multi 的使用
db.user.update({"name":"赵六"},{$set:{age:10}},{multi:true})
完整的修改语句

db.user.update({"name":"赵六"},{$set:{age:18}},true,true)

3.xx之后的修改

db.collection.updateOne()

实例

db.user.updateOne({"age":18},{$set:{age:10}})

db.collection.updateMany()

实例

db.user.updateMany({"name":'赵六'},{$set:{age:12}})

5、remove 删除

主体结构

db.collection.remove(
    <query>,  条件
    justOne,  bool值 默认flase 所有删除
)

实例

删除多条
db.user.remove({"name":"赵六"})
WriteResult({ "nRemoved" : 2 })
删除一条
db.user.remove({"name":"王五"},true)
db.user.remove({"name":"王五"},1)
清除集合中的全部文档数据
db.user.remove({})

3.xx版本之后的删除

db.collection.deleteOne()

db.user.deleteOne({'name':"李四"})
{ "acknowledged" : true, "deletedCount" : 1 }

db.collection.deleteMany()

db.user.deleteMany({'name':"李四"})
{ "acknowledged" : true, "deletedCount" : 2 }

6、查询

(1) find查全部

db.collection.find()

(2) 哪些字段显示与隐藏

指定显示某些字段 字段名:true

db.user.find({},{name:true}) 只显示name和id
db.user.find({},{name:true,age:true}) 显示name和age和id字段

指定除了某个字段之外的字段都显示

db.user.find({},{name:false,age:false})

注意:

本身定义的域 只能设置显示 或者不显示 不能一块儿设置

可是系统的id能够 由于无论你给其余域设置true或者false都会显示

只有这种能够

db.user.find({},{"_id":false,age:true})

(3) findOne 只查询一条

db.user.findOne({"age":28})

(4) count 统计

db.user.find().count()
db.user.find({age:18}).count()

(5) pretty 展开查看

db.user.find().pretty()

(6) 查询条件符

$gt       大于                    db.user.find({age:{$gt:18}})
$gte    大于等于               db.user.find({age:{$gte:18}})
$lt        小于                    db.user.find({age:{$lt:28}})
$lte    小于等于              db.user.find({age:{$lte:28}})
{key:val}    等于                db.user.find({age:28})
$ne        不等于                   db.user.find({age:{$ne:28}})
/数据/    模糊查询             db.user.find({name:/张/})
/^数据/      以...做为开头        db.user.find({name:/^张/})
/数据$/    以...做为结尾        db.user.find({name:/张$/})
$in         在...范围内           db.user.find({'age':{$in:[18,20]}})
$nin    不在...范围内          db.user.find({'age':{$nin:[18,20]}})
按照id来查询                   db.user.find({"_id" : ObjectId("5b0fabcda14d4a753f75edc5")})

(7) and查询

db.user.find({"name":"张三","age":28})
db.user.find({"age":{$gt:18,$lt:28}})
#名字包含李的,而且年龄大于18而且小于28 只显示name字段
db.user.find({"name":/李/,"age":{$gt:18,$lt:28}},{"_id":false,'name':true})

(8) $or查询

db.collection.find({$or:[条件1,条件2...]})

查询年龄大于18 或者 小于28

db.user.find({$or:[{age:{$gt:18}},{age:{$lt:28}}]})
db.user.find({$or:[{name:/张/},{name:/三/}]})

(9) and 和 or的一块儿使用

主体结构:
db.user.find({名:值...,$or:[{条件1},{条件2}...]})
select * from user where name like '%三%' and (age=18 or age=28)

(10) limit 取值

db.collection.find().limit(num)

db.user.find().limit(2)

注意:

从头取出 num条

(11) skip 跳过num条

db.collection.find().skip(num)

db.user.find().skip(2)

(12) limit 和 skip的结合使用

db.collection.find().skip(num).limit(num)

db.user.find().skip(2).limit(2)

(14) sort 排序

db.collection.find().sort({key:1|-1}) #升序或者降序

db.user.find().sort({age:-1}).limit(1)

7、数据库的删除

删除以前最好use一下

db.dropDatabase()

相关文章
相关标签/搜索