本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/29854
一,nosql数据库优点
- NoSql(Not Only SQL)
- key : value结构
- CAP - > BASE
- 一致性 (Consistency) ( 所有节点在同一时间具有相同的数据 )
- 可用性 (Availability) ( 保证每个请求不管成功或者失败都有响应 )
- 分隔容忍 (Partition tolerance) ( 系统中任意信息的丢失或失败不会影响系统的继续运作 )
二,MongoDB特点
- 非关系型数据库 nosql
- 文档存储:类 json 格式
- 有机会对字段建立索引,实现关系数据库
三,MongoDB下载
四,MongoDB 数据库操作
4.1 配置数据库目录
- 运行 MongoDB 服务器
mongod –dbpath xxx
- 连接 MongoDB:
mongo
4.2 数据库操作
- 查看当前数据库:
show dbs
- 切换数据库(如果没有会自动创建):
use demo1
- 往数据库中插入一条数据:
db.demo1.insert({“name”: “ 小红” }
- 切换数据库:
use demo1
- 删除数据库:
db.dropDatabase()
4.3 集合相关命令
- 创建集合:
db.createCollection(‘collection1’)
- 查看已经创建的集合:
show collections
- 删除集合:
db.collection1.drop()
4.4 文档操作
-
文档是 mongodb 中的基本单元,相当于表中的一条记录,以 json 格式显示
-
插入文档时, MongoDB 自动创建集合:
db.collectionDemo.insert({“name” : “hello"})
-
查看插入的内容:
db.collectionDemo.find().pretty()
-
声明变量,插入复杂文档:
document=({title: ‘MongoDB’, by: ‘RuotongYu’, tags: [‘mongodb’, ‘database’, ‘NoSQL’],});
db.collectionDemo.insert(document)
-
拓展用法:
- 更新文档
* 格式:db.collection.update( <query>, <update>, {upsert: <boolean>, multi: <boolean>,
writeConcern: <document> } )
❖ upsert : 如果不存在 update 的记录,是否插入,默认 false
❖ multi : 把按条件查出来多条记录全部更新,默认 fasle
❖ writeConcern : 抛出异常的级别。
❖ 注意:: update 是替换,没有修改的字段会消失!
-
修改文档
- 修改文档:
db.col.update({‘title’:'MongoDB’}, {‘title’:‘MongoDB123’})
- 修改多个文档:
db.col.update({‘name’:‘hello’},{$set:{‘name’:‘hello123’}},{multi:true})
- 修改文档:
-
删除文档
- 删除多个文档:
db.col.remove({‘name’:‘hello123’})
- 删除一个文档:
db.col.remove({‘name’:‘hello’},1)
- 删除多个文档:
4.4 操作符运用
-
修改操作符
$inc
-
用法:
{$inc:{field:value}}
-
作用:对一个数字字段的某个 field 增加 value
-
示例:将 name 为 xiaohong 的学生的 age 增加 5
db.students.update({name:“xiaohong”},{$inc:{age:5}})
-
-
修改操作符
$set
-
用法:
{$set:{field:value}}
-
作用:把文档中某个字段 field 的值设为 value
-
示例: 把 xiaohong 的年龄设为 10 岁
db.students.update({name:“xiaohong”},{$set:{age:10}})
-
-
修改操作符 $unset
-
用法:
{$unset:{field:1}}
-
作用:删除某个字段 field
-
示例: 将 chenzhou 的年龄字段删除
db.students.update({name:“chenzhou”},{$unset:{age:1}})
-
-
修改操作符 $push
-
用法:
{$push:{field:value}}
-
作用:把 value 追加到 field 里。注: field 只能是数组类型,如果 field 不存在,会自动插入一个数组类型
-
示例:给 chenzhou 添加别名 “michael”
db.students.update({name:“chenzhou”},{$push:{“ailas”:“Michael”}})
-
-
修改操作符 $rename
-
用法:
{$rename:{old_field_name:new_field_name}}
-
作用:对字段进行重命名
-
示例:把 xiaohong 记录的 name 字段重命名为 hello
db.students.update({name:“xiaohong”},{$rename:{“name”:“name2”}})
-