Linux下的MongoDB基础学习一

本想写一个安装步骤,不过已经有了更好的,那就拿来用用。安装步骤请看此博客:https://blog.csdn.net/u010858605/article/details/50957610

 

MongoDB 是为了快速开发互联网web应用而设计的数据库系统,其数据模型和持久化策略就是为了构建高读/写吞吐量和高自动灾备伸缩性的系统。MongoDB是一款非关系型的数据库,什么叫非关系型?就是把数据直接放进一个大仓库,不标号,不连线,单纯的堆起来。传统数据库由于受到各种关系的累赘,各种数据形式的束缚,难以处理海量数据以及超高并发的业务场景。这一款数据库不支持外键,不支持事务,不支持数据类型约定。

{
    _id:10,
    username:'peter',
    email:'pakjd1231231@mail.com'
}

这段简单的文档存储了用户的一些简单信息字段。这个数据模型的优势是:每个用户都有多个邮箱,在关系型数据库里需要创建单独的email表,而MongoDB提供了非常简单的方式来解决这种问题。

{
    _id:10,
    username:'peter',
    email:'pakjd1231231@mail.com',
          'pakjd123123121@mail.com'
}

MongoDB文档的格式基于JSON,一种流行的数据存储格式。JSON数据结构由键值对组成,也可以内置嵌套。这一点与其他语言中的哈希映射以及字典类型相似。这种格式经常用来处理无需多表关联的工作。

例如,要为电商网站的数据库建模。若使用标准的范式设计数据库信息,可能分割到几十个表中存储,要获得完整的数据库里存储的商品信息,则可能需要关联SQL查询。使用文档模型时,绝大部分单个商品信息都可以存储在单个文档里。大部分开发者使用的是面向对象编程语言,使用MongoDB,语言中定义的对象可以原样持久化保存,减少了对象映射的复杂性。

一、Linux下的MongoDB的操作

在安装完毕后,启动MongoDB。方法与启动mysql方法一致:

sudo service mongodb start

#开启之后

#输入

mongodb

与mysql一致,MongoDB也可以创建多个数据库,使用show dbs可用来查看数据库的列表,执行db命令则可以查看当前数据库对象或者集合,运行use命令可以连接到指定的数据库。在MongoDB中数据库的名字可以使任意的字符,但是不能有空格、点号和$。

二、MongoDB的核心——文档

文档的逻辑关系:

例如当前有两个文档,分别是user和address文档

{
    "name":"Tom Hanks",
    "contact":"987654321",
    "dob":"01-01-1991"
}#user文档

{
    "building":"22 A,Indiana Apt",
    "pincode":123456,
    "city":"chengdu",
    "state":"sichuan"
}#address文档

关系1:嵌入式关系,把address文档嵌入到user文档中

{
   "name": "Tom Hanks",
   "contact": "987654321",
   "dob": "01-01-1991",
   "address":
   [{
   "building": "22 A, Indiana Apt",
   "pincode": 123456,
   "city": "chengdu",
   "state": "sichuan"
    },
    {
    "building": "170 A, Acropolis Apt",
    "pincode": 456789,
    "city": "beijing",
    "state": "beijing"
    }]
}#这就是嵌入式的关系

关系2:引用式关系:将两个文档分开,通过引用文档的_id字段来建立关系

{
   "name": "Tom Hanks",
   "contact": "987654321",
   "dob": "01-01-1991",
   "address":
   [{
   "building": "22 A, Indiana Apt",
   "pincode": 123456,
   "city": "chengdu",
   "state": "sichuan"
    },
    {
    "building": "170 A, Acropolis Apt",
    "pincode": 456789,
    "city": "beijing",
    "state": "beijing"
    }]
}#这就是引用式的关系

在实际应用的时候,嵌入式关系比较适合一对一的关系,引用式关系比较适合一对多或者多对多的情况。

启动服务后,进入 MongoDB 命令行操作界面:
使用 use 命令创建数据库:

> use mydb
//当创建成功时,会出现switched to db tutorial


查看当前连接的数据库:

> db


查看所有的数据库:

> show dbs


列出的所有数据库中看不到 mydb 或者显示 mydb(empty) ,因为 mydb 为空,里面没有任何东西,MongoDB 不显示或显示 mydb(empty)。

使用 db.dropDatabase() 销毁数据库:

use 数据库名称

db.dropDatabase()

输入上面两行后,show dbs即可查看到所要删的数据库已不存在。如果要删的数据库之前就存在,且里面有内容,则会出现下面的情况:

如果要删的数据库之前不存在,则会出现下面的情况:

创建集合(即表)

use 数据库名称

db.createCollection("集合名称即表名称")
或者还有带参数的
db.createCollection("集合名称",{参数1:值,参数2:值,......})

#参数描述:

#capped:类型为 Boolean,如果为 true 则创建一个固定大小的集合,当其条目达到最大时可以自动覆盖以前的条目。在设置其为 true 时也要指定参数大小;
#autoIndexID:类型为 Boolean,默认为 false,如果设置为 true,则会在 _id field.s 上自动创建索引;
#size:如果 capped 为 true 需要指定,指定参数的最大值,单位为 byte;
#max:指定最大的文档数。 在 Mongodb 中也可以不用创建集合,因为在创建文档的时候也会自动的创建集合。

#通过下面的语句查看所建立的表
show collections

#删除表的语句
show collections
db.集合名称.drop()

#更新
语法:db.COLLECTION_NAME.update(SELECTION_CRITERIA,UPDATED_DATA)

#操作实例:
db.shiyanlou.update({"e-mail":"test@qq.com"},{$set:{"e-mail":"group@qq.com"}},{multi:true})
#前一个大括号是查询语句,后一个大括号是要修改成的语句

 插入语句:有两种插入语insert和save

1.insert插入:

> use mydb switched to db mydb > db.users.insert
([ 
... { name : "jam", ... email : "jam@qq.com" ... },
... { name : "tom", ... email : "tom@qq.com" ... } 
... 
])

2.save插入:

> use mydb2
switched to db mydb2
> db.users.save([
... { name : "jam",
... email : "jam@qq.com"
... },
... { name : "tom",
... email : "tom@qq.com"
... }
... ])

insert 和 save 的区别,为了方便记忆,可以先从字面上进行理解,insert 是插入,侧重于新增一个记录的含义,save 是保存,可以保存一个新的记录,也可以保存对一个记录的修改。因此,insert 不能插入一条已经存在的记录,如果已经有了一条记录(以主键为准),inser 操作会报错,而使用 save 指令则会更新原记录。

3.save替换已经存在的文档

语法:db.集合名称.save({_id:ObjectId(),NEW_DATA})

例子:
db.集合名称.save({"_id":ObjectId("53ea174ccb4c62646d9544f4"),"name":"Bob","position":"techer"})

删除文档

db.集合名称.remove(DELECTION_CRITERIA)

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值