• MongoDB学习笔记一:入门


    文档:多个键及其关联的值『有序』地放置在一起。
    {"greeting" : "Hello, world!", "foo" : 3}
    集合:一组文档。集合是无模式的,下面两个文档可以存在于同一个集合里面:
    {"greeting" : "Hello, world!"}
    {"foo" : 5}
    集合的命名规则:
    (1)集合名不能使空字符串""。
    (2)集合名不能含有\0字符(空字符),这个字符表示集合名的结尾。
    (3)集合名不能以"system."开头,这是为系统集合保留的前缀。例如system.users这个保存着数据库的用户信息,system.namespaces集合保存着所有数据库集合的信息。
    (4)用户创建的集合名字不能含有保留字符$。
    子集合按“.”字符划分。例如,一个带有博客功能的应用肯呢个包含两个集合,分别是blog.posts和blog.authors。这样做的目的是为了使组织结构更好些,虽然blog这个集合和他的子集合没有任何关系。
    数据库:多个集合。
    MongoDB中多个文档组成集合,多个集合组成数据库。
    数据库的命名规则:数据库名可以是满足以下条件的任意UTF-8字符串。
    (1)不能是空字符串("")。
    (2)不得含有' '(空格)、.、$、/、\和\0(空字符)。
    (3)应全部小写。
    (4)最多64字节。
    因为 数据库名最终会编程文件系统里的文件。
    保留的特殊数据库名:
    admin:从权限的角度看,这是“root”数据库。如果将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。
    local:这个数据永远不会被复制,可以用来存储限于本地单台服务器的集合。
    config:当Mongo用于分片设置时,config数据库在内部使用,用于包UC你分片的相关信息。
    命名空间 = 数据库名.集合名
    例如,如果你在cms数据库中使用blog.posts集合,那么这个集合的命名空间就是cms.blog.posts。
    启动MongoDB:
    Linux: $ ./mongod
    Windows:$ mongod.exe
    mongod默认数据目录/data/db(windows下C:\data\db\),默认端口27017。创建数据目录(比如mkdir -p /data/db),并确保对该目录有些权限是很重要的。
    mongod还会在端口28017启动一个非常基本的HTTP服务器,可以通过浏览器访问http://localhost:28017来获取数据库的管理信息。
    MongoDB shell:MongoDB自带一个JavaScript shell,可以从命令行与mongoDB实例交互。
    运行mongo启动shell:
    $ ./mongo
    shell会在启动时自动连接MongoDB服务器,所以要确保在使用shell之前启动mongod。
    shell是功能完备的JavaScript解释器,可以运行任何JavaScripe程序。
    shell是一个独立的MongoDB客户端。开启的时候,shell会连到MongoDB服务器的test数据库,并将这个数据库连接赋值给全局变量db。这个变量是通过shell访问MongoDB的主要入口点。
    shell还有些非JavaScript语法的扩展,是为了方便习惯于SQL shell的用户而添加的。例如,最重要的操作就是选择要使用的数据库:
    > use foobar
    switched to db foobar
    现在如果看看db,会发现其指向foobar数据库:
    > dbfoobar
    可以通过db变量访问其中的集合。例如db.baz返回当前数据库的baz集合。

    『shell中的基本操作』:创建、读取、更新和删除(CRUD)。
    1.创建
    例:假设要存储一篇博客文章。首先,创建一个局部变量post,内容是代表文档的JavaScript对象。里面会有"title","content"和"date"(发表日期)几个键。
    > post = {"title" : "My Blog Post",
    "content" : "Here's my blog post.",
    "date" : new Date()}
    这个对象是个有效的MongoDB文档,所以可以用insert方法将其保存到blog集合中:
    > db.blog.insert(post)
    可以调用find方法来查看:
    > db.blog.find()
    2.读取
    find会返回集合里面所有的文档。若只是想查看一个文档,可以用findOne:
    > db.blog.findOne()
    3.更新
    例:第一步修改变量post,增减"comments"键:
    > post.comments = []
    然后执行update操作,用新版本的文档替换标题为"My Blog Post"的文章:
    > db.blog.update({title : "My Blog Post"}, post)
    文档此时已经有了"comments"键,可以再用find查看一下:
    > db.blog.find()
    4.删除
    remove用来从数据库中永久性地删除文档。在不使用参数进行调用的情况下,它会删除一个集合内的所有文档。他也可以接受一个文档以指定限定条件。例如,下面的命令会删除我们刚刚穿件的文章:
    > db.blog.remove({title : "My Blog Post"})

    使用shell的窍门
    > help
    使用db.help()可以查看数据库级别的命令的帮助;
    使用db.foo.help()可以查看集合的相关帮助。
    在输入函数的时候不要输括号,会显示该函数的JavaScript源代码。如:
    > db.foo.update
    要查看shell提供的所有自动生成的JavaScript函数API文档,可访问http://api.mongodb.org/js/

    MongoDb的数据类型:
    · null
    null用于表示空值或者不存在的字段。
    {"x" : null}
    · 布尔
    布尔类型有两个值'true'和'false'
    {"x" : true}
    · 32位整数
    shell中这个类型不可用。JavaScript仅支持64位浮点数,所以32位整数会被自动转换。
    · 64位整数
    shell也不支持这个类型。shell会使用一个特殊的内嵌文档来显示64位整数。
    · 64位浮点数
    shell中的数字都是这种类型。下面是一个浮点数:
    {"x" : 3.14}
    这个也是浮点数:
    {"x" : 3}
    · 字符串
    UTF-8字符串都可以表示为字符串类型的数据:
    {"x" : "foobar"}
    · 符号
    shell不支持这种类型。shell将数据库里的符号类型转换成字符串。
    · 对象id
    对象id是文档的12字节的唯一ID。
    {"x" : ObjectId()}
    · 日期
    日期类型存储的是从标准纪元开始的毫秒数。不存储时区:
    {"x" : new Date()}
    · 正则表达式
    文档中可以包含正则表达式,采用JavaScript的正则表达式语法:
    {"x" : /foobar/i}
    · 代码
    文档中还可以包含JavaScript代码:
    {"x" : function() { /* ... */ }}
    · 二进制数据
    二进制数据可以由任意字节的串组成。不过shell中无法使用。
    · 最大值
    BSON包括一个特殊类型,表示可能的最大值。shell中没有这个类型。
    · 最小值
    BSON包括一个特殊类型,表示可能的最小值。shell中没有这个类型。
    · 未定义
    文档中也可以使用未定义类型(JavaScript中null和undefined是不同的类型)。
    {"x" : undefined}
    · 数组
    值得集合或列表可以表示成数组:
    {"x" : ["a", "b", "c"]}
    · 内嵌文档
    文档可以包含别的文档,也可以作为值嵌入到父文档中:
    {"x" : {"foo" : "bar"}}

  • 相关阅读:
    Oracle86和92语法的连接,子查询,集合的操作
    Oracle笛卡尔积,分组,多表连接
    Oracle排序,伪列,字符函数,数字函数,日期行数
    Oracle基本的数据类型以及简单sql查询
    用while语句打印阶乘
    Switch小练习
    if语句多表达式与一个表达式
    三元操作符
    整数的二进制表达
    与或
  • 原文地址:https://www.cnblogs.com/answernotfound/p/mongodbnote1.html
Copyright © 2020-2023  润新知