• MongoDB 学习一


    这一章,我们先介绍几个MongoDB的概念:

    1.document: 它是MongoDB的基础数据单元,它大概等价于关系型数据库中的行。

    2.collection: 可以想象成动态的表。

    3.一个简单的MongoDB实例可以携带多个独立的数据库,每个数据库都有属于自己的collections。

    4.每个document都有自己特殊的key。"_id",它在collection中是唯一值。

    5.MongoDB提供了一个简单而又强大的JavaScript Shell,这对管理MongoDB实例和数据操作十分有用。

    Documents

    MongoDB的核心就是document。它其实是一个对象(键值对),例:

    {"greeting":"Hello,world!"}

    当然大多数的document比上面这个复杂的多,它的value可以有多种类型,当然还可以嵌套document,后续会进行介绍。

    document的key值都是string类型。任何的utf-8字符都允许出现在key中,但有几个值得注意的地方:

    1.key不能包含字符 。

    2. .和$字符应该最为保留字符,它们含有特殊的属性并在某些情况中会用到。

    MongoDB是类型敏感和大小写敏感的,举个例子:

    {"foo":3}
    {"foo":"3"}

    上面例子的两个object是不相等的。

    document中不能包含重复的key值,这是不合法的。

    Collections

    collections是一组document的集合,类似于关系型数据库中的表。不过collection可以是动态的。例如:

    {"greeting":"Hello,World!"}
    {"foo":5}

    上面这两个document可以存在同一个collection中。

    这样我们就会有一个疑问,既然collection是动态的,可以存不同的document,那么我们为什么要将collection根据不同的document分离成多个collecion呢?

    原因:

    1.保存不同类型的document对程序员来说是个噩梦,因为我们做某些查询的时候,程序员必须确定返回的值里只有A类型的document,这时清除不要的数据会很麻烦。

    2.查询速度。

    3.建立索引。

    Databases

    每个数据库都有它的权限,并且作为一个单独的文件存放在硬盘上。

    数据库名字命名规则:

    1.不能以空“”作为数据库名字

    2.不能包含字符:/,\,.,",*,<,>,:,|,?,$,一个单独的空格,。

    3.数据库名字大小写敏感,建议都用小写字符

    4.数据库名字最大64位。

    5.数据库名字有保留字,有特殊意义(admin,local,config)

    Introduction to the MongoDB Shell

    MongoDB Shell是一个功能齐全的JavaScript解释器,可以跑任意的JavaScript程序,我们还能利用所有标准的JavaScript库。

    甚至我们还可以定义及调用JavaScript函数。你可以创建多行命令,当你按回车键时,Shell会检测你的JavaScript脚本是否已完成。

    连按三次回车键会取消输入一半的命令并且会给你>-的返回提示。

    Basic Operations with the Shell

    Create

    设想我们想要保存一篇博客,首先我们创建一个变量post,它作为一个JavaScript的一个对象来代表document。并且包含key值"title","content","data"

    > post={
    ...   "title:"MyBlog Post",
    ...   "content":"Here's my blog post.",
    ...   "date":new Date()
    ... }

    下来我们直接执行插入方法:

    > db.blog.insert(post)

    这是,这条数据就保存到数据库中了。 下来我们执行查询方法:

    > db.blog.find()

    就能看到我们刚刚插入的数据了。

    Update

    update有两个参数,第一个是用来查找要更新的document,第二个是新的document。

    > post.comments=[]
    >db.blog.update({"title":"MyBlog Post"},post)

    上面代码是要给post添加一个comments的字段。

    Delete

    db.blog.remove({"title":"MyBlog Post"})

    _id and ObjectIds

    每个保存在MongoDB中的document都有key值“_id”。 它可以是任何类型,但是默认的是ObjectId.在一个collection钟,每个document都有唯一的"_id"值,保证它是唯一的。

    ObjectIds在被设计时就是轻量级的。他在多台机器中很容易的就能生成全局的唯一值。 MongoDB的分布式性质决定了为什么使用objectId而不是用传统的主键生成方式,例如自动增量。它在自动同步多台机器的主键时十分耗费时间。

    待续...

  • 相关阅读:
    天乙社区后台管理分析(一)
    [Android Webkit]JNI基础及Java层与C++层的交互
    1033
    pat 1049. Counting Ones (30)
    juce: 跨平台的C++用户界面库
    高性能MySql进化论(一):数据类型的优化_上
    url参数中有+、空格、=、%、&、#等特殊符号的处理
    带环单链表的问题
    在SQL Server 中启用 FileStream
    (2)入门指南——(2)jQuery可以做什么(What jQuery does)
  • 原文地址:https://www.cnblogs.com/showtime813/p/4785498.html
Copyright © 2020-2023  润新知