mongodb概念--文档、集合、数据库、shell

Mongodb不是关系型数据库,对于使用关系型数据库较多的我们,mongodb的一些基本概念需要好好的理解。在理解这些概念的时候,我是以与关系型数据库等对比的方式来理解的,这样有助对概念的更好理解。

1.文档
  文档时mongodb中数据的基本单元,类似关系型数据库中的行。
  >>关系型数据库:
    行:是标识一条存在数据库中的记录,行有唯一标识的字段,比如oracle就有隐藏存在的rowid。行有列,标识对应字段的名称,字段值为列所表示的值。
  >>Mongodb
    文档:标识集合中的一条记录,即集合中的一个对象,形象的对比:数组中的一个元素,List中的一个元素等(个人理解)。文档有唯一的标识“_id”,数据库可自动生成,可类比oracle的rowid。
          文档以key/value的方式,如下文档:
          {"name":"jack","age":20}
          可类比数据表的列,以及列对应的值。
         
          以下列出键值为不同类型的不同文档:
          文档1:{"name":"wangjun","age":20,"email":["wang1","wang2","wang3"],"schools":{"xiao":"zhongfengxiaoxue","zhong":"zhongfengzhongxue","da":"zhongfengdaxue"}}
          文档2:{"Name":"wangjun","Age":20,"email":["wang1","wang2","wang3"],"schools":{"xiao":"zhongfengxiaoxue","zhong":"zhongfengzhongxue","da":"zhongfengdaxue"}}
          文档3:{"name":"wangjun","email":["wang1","wang2","wang3"],"age":20,"schools":{"xiao":"zhongfengxiaoxue","zhong":"zhongfengzhongxue","da":"zhongfengdaxue"}}
         
          三个不同文档说明以下问题:
          1> 文档的键值对是有序的,顺序的不同文档亦不同
          2> 文档的值可以使字符串、整数、数组以及文档等类型
          3> 文档的键是用双引号标识的字符串(常见的);除个别例外外,可用任务UTF-8字符。要求如下:
             >键不能含有\0(空字符),这个字符用来标识键的结尾
             >.和$被保留,存在特别含义,最好不要用来命名键名
             >"_"开头的键是保留的,建议不要使用。
         
          4> 文档区分大小写以及值类型,比如:
             {"name":"wangjun","age":20}
             {"name":"wangjun","age":"20"}
            
             {"Name":"wangjun","Age":20}
             {"name":"wangjun","age":"20"}
            
             以上这些通过比较着来看,我觉得就都很好理解。
            
2.集合
  集合在mongodb中是一组文档,类似关系型数据库中的数据表。
  >>关系型数据库:
    表:是存储多个数据的,表中存在多行。表,即模式.表名。表中的数据行在列数、列的类型都是一样。
    select * from [模式].表名
  >>Mongodb
    mongodb数据库不是关系型数据库,没有模式的概念。集合中的文档可以使不同形式的。比如:
    {"name":"jack","age":19}
    {"name":"wangjun","age":22,"sex":"1"}
   
    可以存在同一个集合当中。
   
    集合是由唯一的命名来标识,满足以下条件的任意UTF-8字符串:
    >集合名不能使空字符串""
    >集合名不能含有\0字符(空字符),这个字符标识集合名的结尾
    >集合名不能以"system."开头,该为系统集合保留的前缀
    >用户创建的集合名字不能含有保留字符$
   
    比如:集合classes   classes的子集合students  查询方式:
    db.classes.find()
    db.classes.students.find()
   
    跟关系型数据库的数据表、组数、列表对比看,我觉得mongodb的集合更像列表List。
   
3.数据库
  mongodb中多个文档构成集合,多个集合构成数据库。
  >>关系型数据库
    在安装数据库的时候数据库实例创建,同时存在系统默认的管理员用户。之后可以创建多个用户并进行赋权,创建的表存在于不同的用户之下,不同的用户存储着不同的数据。
  >>Mongodb
    mongodb以文档的形式保存在集合中,可以同一数据库存储不同的数据或者集合,即DB2、oracle、teradata等都可以存储在同一个数据库中。最近做的项目就可以将这三者数据库的数据都保存到同一数据库中。
   
    mongodb服务器可以存在多应用或者用户的数据,可以相互独立。数据的命名规则:
    >不能使空字符串("")
    >不得含有''(空格)、.、$、/、|和\0(空字符)
    >应全部小写
    >最多64字节
   
    保留数据库名:admin、local、config
   
4.Mongodb Shell
  Mongodb Shell即自带的javascript shell,javascript解释器.运行mongo启动shell后自动连接Mongodb服务器,运行javascript程序。可以再shell窗口里面进行javascript函数的一些操作。
  如:
  >1+1
  2
  >val = 10
  10
  >val/2
  5
  >
 
  shell也是Mongodb客户端,shell连接Mongodb服务器的test数据库,并将该数据库的连接赋值给全局变量db,即shell访问mongodb数据库的主要入口点。
  shell操作:
  1.创建:db.a.insert({"name":"jack","age":19})
          db.a.insert({"name":"luce","age":20})
         
  2.查找:db.a.find()                  --全查
          db.a.findOne()               --只取多个的第一个
          db.a.find({"name":"jack"})   --根据条件查找
         
  3.更新:db.a.update({"name":"jack"},{"age":30})
 
  4.删除:db.a.remove()                --删除所有文档,集合保留
          db.a.remove({"name":"jack"}) --删除复合条件的文档
          db.a.drop()                  --删除集合,于此同时所有文档也删除了
  
   从上面可以看出,shell中使用的为javascript脚本,具体的使用类比jquery中方法的调用方式,面向对象???
  

以上是我参考一些资料和实际的工作和学习的理解,有什么问题请指出,谢谢!

         

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
MongoDB ShellMongoDB数据库的官方命令行工具,它提供了一个交互式的环境,可以与MongoDB数据库进行交互和管理。通过MongoDB Shell,你可以执行各种数据库操作,如查询、插入、更新和删除数据,创建和管理集合、索引等。 MongoDB Shell使用JavaScript语言编写,因此你可以使用JavaScript语法来操作数据库。它提供了一些内置的命令和方法,用于执行各种数据库操作。以下是一些常用的MongoDB Shell命令和操作: 1. 连接到数据库:使用`mongo`命令可以连接到MongoDB数据库。例如,`mongo --host <hostname> --port <port>`可以连接到指定的主机和端口上的数据库。 2. 切换数据库:使用`use <database>`命令可以切换到指定的数据库。例如,`use mydb`可以切换到名为"mydb"的数据库。 3. 查询数据:使用`db.<collection>.find(<query>)`命令可以查询指定集合中符合条件的数据。例如,`db.users.find({ age: { $gt: 18 } })`可以查询年龄大于18岁的用户数据。 4. 插入数据:使用`db.<collection>.insert(<document>)`命令可以向指定集合中插入数据。例如,`db.users.insert({ name: "John", age: 25 })`可以插入一个名为"John"、年龄为25岁的用户数据。 5. 更新数据:使用`db.<collection>.update(<query>, <update>)`命令可以更新指定集合中符合条件的数据。例如,`db.users.update({ name: "John" }, { $set: { age: 30 } })`可以将名为"John"的用户的年龄更新为30岁。 6. 删除数据:使用`db.<collection>.remove(<query>)`命令可以删除指定集合中符合条件的数据。例如,`db.users.remove({ age: { $lt: 18 } })`可以删除年龄小于18岁的用户数据。 这些只是MongoDB Shell的一些基本操作,还有很多其他的命令和功能可以用于更复杂的数据库操作和管理。如果你想了解更多关于MongoDB Shell的信息,可以参考MongoDB官方文档

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值