zoukankan      html  css  js  c++  java
  • 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"}}

  • 相关阅读:
    ZOJ Problem Set–2417 Lowest Bit
    ZOJ Problem Set–1402 Magnificent Meatballs
    ZOJ Problem Set–1292 Integer Inquiry
    ZOJ Problem Set–1109 Language of FatMouse
    ZOJ Problem Set–1295 Reverse Text
    ZOJ Problem Set–1712 Skew Binary
    ZOJ Problem Set–1151 Word Reversal
    ZOJ Problem Set–1494 Climbing Worm
    ZOJ Problem Set–1251 Box of Bricks
    ZOJ Problem Set–1205 Martian Addition
  • 原文地址:https://www.cnblogs.com/answernotfound/p/mongodbnote1.html
Copyright © 2011-2022 走看看