MongoDB

什么是MongoDB?

        MongoDB是一个介于关系数据库和非关系数据库(nosql)之间的产品,是非关系数 据库当中功能最丰富,最像关系数据库的。

优点:

        1.MongoDB的提供了一个面向文档存储,操作起来比较简单和容易。

        2.如果负载的增加,它可以分布在计算机网络中的其他节点上这就是所 谓的分片。

        3. MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++, PHP,C#等多种语言。

        4.你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的 扩展性。

缺点:

        1. MongoDB 不支持事务

        2. MongoDB 不能进行多表联查

MongoDB解决了Mysql 的“三高”问题:

        1.对数据库高并发写入需求

        2.对海量数据高效率存储访问需求

        3.对数据库高扩展和高可用的需求

MongoDB 实际应用:

        1.社交场景,比如朋友圈,附近的人的地点的存储

        2.游戏场景,比如用户当前装备,得分等

        3.物流场景,比如快递的位置,状态,途径

        4.视频场景,比如直播中的点赞数和互动留言等

基本操作:

#操作数据库
查看所有数据库:
show db

创建数据库:
use dbname 

#如果数据库不存在,则创建数据库,否则切换到指定数据库
#在 MongoDB 中,集合只有在内容插入后才会创建! 就是说,创建集合(数据表)后要再插入一个文档
(记录),集合才会真正创建。

查看当前使用的数据库:
db

删除数据库
db.dropDatabase()


#操作集合

创建集合:
db.createCollection(“集合名”)

查看集合:
show collections / show tables

删除集合:
db.集合名.drop()

在集合中插入数据
db.集合名.insert(document)

在集合中更新数据

语法:
db.集合名.update({查询条件},{$set:{更新内容}},
{
upsert: ,
multi: ,
}
)
upsert: 默认为false ,如果查询不到数据,则把跟新输入插入
multi:默认为false,默认只改一条,true,更改多条
eg:
db.col.update({'name':'张三'},{$set:{'name':'张三丰'}})
db.col.update({'name':'张三'},{$set:{'name':'张三丰'}},{multi:true})
db.col.update({'name':'张三'},{$set:{'name':'张三丰'}},{upsert:true,multi:true})

#如果我们想实现在某一列上在原有的值基础之上进行递增1效果可以用$inc运算符来实现
语法:
db.集合名.update({查询条件},{$inc:{字段名:NumberInt(1)}})
eg:
db.col.update({‘_id':’1'},{$inc:{likenum:NumberInt(1)}})

在集合中删除文档
删除文档:
db.集合名称.remove(
,
{
justOne: 
}
)
eg:
删除所有数据:
db.col.remove({})
删除一条数据
db.col.remove({“name”:”张三”},{justOne:true})
删除多条数据
db.col.remove(“name”:”张三”})

在集合中查询文档
db.collection.find(query)
MongoDB查询条件:

MongoDB_第1张图片

MongoDB的 And条件:

        db.col.find({key1:value1, key2:value2})    //传入多个键(key),每个键(key)以逗号隔开

MongoDB的 Or条件:
db.col.find(
  {
    $or: [
      {key1: value1}, {key2:value2}
    ]
  }
)
MongoDB的 And 与 Or 一起使用:

        db.col.find({“key1": {$gt:value1}, $or: [{“key2": “value2"},{“key3": “value3"}]})

MongoDB范围条件:

        eg:col"集合中 “key" 大于100,小于 200 的数据

        db.col.find({“key” : {$lt :200, $gt : 100}})

MongoDB的模糊查询:

        查询 name 包含“小"字的文档: db.col.find({“name”:/小/})

        查询 name 字段以“小"字开头的文档: db.col.find({“name”:/^小/})

        查询 name字段以“小"字结尾的文档: db.col.find({“name”:/小$/})

MongoDB的Limit 和 Skip操作:

        db.col.find().limit(NUMBER)     //limit(num) 读取的数据条数

        db.col.find().limit(NUMBER).skip(NUMBER)      //skip(num) 跳过的数据条数

MongoDB的统计:

        db.col.count( [ {key:value} ] )

MongoDB的排序:

        db.col.find().sort({KEY:1})      //1 为升序排列,而 - 1 为降序排列

MongoDB的索引:

        1. 查看索引 db.collection.getIndexes()

        2. 创建索引(单个索引,复合索引) db.collection.createIndex(keys,option)

                例如 :db.col.createIndex({username:1【, key:1】})

        3. 删除索引 db.collection.dropIndex(index)

                例如:db.col.dropIndex({username:1})

你可能感兴趣的:(mongodb,数据库)