zoukankan      html  css  js  c++  java
  • MongoDB基础知识 01

    MongoDB基础知识 

    1. 文档 

    文档是MongoDB中的数据的基本单元,类似于关系型数据库管理系统的行。

    文档是键值对的一个有序集。通常包含一个或者多个键值对。

    例如:

    {”greeting" : "Hello, world!", "foo", 3}

    2. 集合(collection)

    集合就是一组文档,类似关系型数据库中的一张表。

    3. 数据库(database)

    多个文档组成集合,多个集合组成数据库。一个MongoDB实例可以承载多个数据库。

    MongoDB中保留的有特殊语义的数据库:admin, local, config。

    4. 启动MongoDB

    运行mongod,启动数据库服务器。

    Last login: Fri Aug 22 11:03:36 on ttys001
    zhangxindeMacBook-Pro:~ zhangxin$ mongod
    mongod --help for help and startup options
    2014-08-22T11:51:55.900+0800 [initandlisten] MongoDB starting : pid=596 port=27017 dbpath=/data/db 64-bit host=zhangxindeMacBook-Pro.local
    2014-08-22T11:51:55.901+0800 [initandlisten] 
    2014-08-22T11:51:55.901+0800 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
    2014-08-22T11:51:55.901+0800 [initandlisten] db version v2.6.4
    2014-08-22T11:51:55.901+0800 [initandlisten] git version: 3a830be0eb92d772aa855ebb711ac91d658ee910
    2014-08-22T11:51:55.901+0800 [initandlisten] build info: Darwin bs-osx108-4 12.5.0 Darwin Kernel Version 12.5.0: Sun Sep 29 13:33:47 PDT 2013; root:xnu-2050.48.12~1/RELEASE_X86_64 x86_64 BOOST_LIB_VERSION=1_49
    2014-08-22T11:51:55.901+0800 [initandlisten] allocator: system
    2014-08-22T11:51:55.901+0800 [initandlisten] options: {}
    2014-08-22T11:51:55.902+0800 [initandlisten] journal dir=/data/db/journal
    2014-08-22T11:51:55.902+0800 [initandlisten] recover : no journal files present, no recovery needed
    2014-08-22T11:51:55.996+0800 [initandlisten] waiting for connections on port 27017

    mongod在没有参数的情况下会使用默认数据目录,/data/db (windows系统中是C:datadb),如果目录不存在或者不可写,服务器启动会失败。

    在mac或者linux下可以用mkdir -p /data/db/ ,确保创建的目录有写权限。

    关闭mongod,可用 Ctrl + C来关闭。

    5. MongoDB shell 简介

    在确保mongod 已经启动的情况下,打开一个新的命令行运行mongo启动shell。

    Last login: Fri Aug 22 11:51:24 on ttys001
    zhangxindeMacBook-Pro:~ zhangxin$ mongo
    MongoDB shell version: 2.6.4
    connecting to: test
    Server has startup warnings: 
    2014-08-22T11:51:55.901+0800 [initandlisten] 
    2014-08-22T11:51:55.901+0800 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
    > 

    shell是一个功能完备的JavaScript解释器,可运行任何JavaScript程序。

    5.1 要查看当前指向哪个数据库,可以使用db命令:

    为方便SQL shell的用户,shell还包含了一些非JavaScript语法的扩展。

    选择数据库使用use + dbname(数据库名称),再使用db 查看db变量,则发现已经指向了dbname数据库。

    Last login: Fri Aug 22 11:51:24 on ttys001
    zhangxindeMacBook-Pro:~ zhangxin$ mongo
    MongoDB shell version: 2.6.4
    connecting to: test
    Server has startup warnings: 
    2014-08-22T11:51:55.901+0800 [initandlisten] 
    2014-08-22T11:51:55.901+0800 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
    > db
    test
    > use zhangxindb
    switched to db zhangxindb
    > db
    zhangxindb
    > 

    5.2 shell 中的基本操作

    5.2.1 创建

    insert 函数可将一个文档添加到集合中。

    创建一个名为post的局部变量,这是一个JavaScript对象,用于表示我们的文档。

    > post = {"title":"My Blog Post", "content":"Here's my blog post.", "date":new Date() }
    {
        "title" : "My Blog Post",
        "content" : "Here's my blog post.",
        "date" : ISODate("2014-08-22T03:53:31.624Z")
    }
    > 

    这个对象是一个有效的MongoDB文档,用insert方法保存到blog集合中。

    > db.blog.insert(post)
    WriteResult({ "nInserted" : 1 })
    
    > db.blog.findOne()
    {
        "_id" : ObjectId("53f6bee6ef70aed220766a98"),
        "title" : "My Blog Post",
        "content" : "Here's my blog post.",
        "date" : ISODate("2014-08-22T03:53:31.624Z")
    }
    > 

    5.2.2 读取

    find和findOne()方法可以用于查询集合里的文档。如上图中所示。

    5.2.3 更新

    使用update修改博客文章。update方法至少接收两个参数,第一个是限定条件,第二个是新的文档。比如:

    > post.comments = []
    [ ]
    > post
    {
        "title" : "My Blog Post",
        "content" : "Here's my blog post.",
        "date" : ISODate("2014-08-22T03:53:31.624Z"),
        "comments" : [ ]
    }
    > db.blog.update({title:"My Blog Post"},post)
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.blog.findOne()
    {
        "_id" : ObjectId("53f6bee6ef70aed220766a98"),
        "title" : "My Blog Post",
        "content" : "Here's my blog post.",
        "date" : ISODate("2014-08-22T03:53:31.624Z"),
        "comments" : [ ]
    }
    > 

    4. 删除

    使用remove方法可将文档从数据库中永久删除。如果没有任何参数,会将集合内所有文档全部删除。

    > db.blog.remove({title:"My Blog Post"})
    WriteResult({ "nRemoved" : 1 })
    > db.blog.findOne()
    null

    本文适合零基础并且想快速入门的同学,写的非常简略简单就是为了用最短的时间入门,在入门后,再逐步深入,细细挖掘。不适合有基础,或者想慢慢啃的同学,相当于是快餐吧。有错误请不吝赐教。

    参考资料:《MongoDB权威指南》

    试验环境:mac 64位

  • 相关阅读:
    python 20 规范化目录
    python 19 包、logging模块
    python 17 Json、os、sys、hashlib等内置模块
    python 16 time、datetime、random模块
    python 15 带参装饰器
    python 14 装饰器
    [LeetCode]36. Compare Version Numbers版本号比较
    [LeetCode]35. Valid Parentheses有效括号
    [LeetCode]34. Add Binary二进制相加
    [LeetCode]33. Longest Palindromic Substring最长回文子串
  • 原文地址:https://www.cnblogs.com/sdlypyzq/p/3928912.html
Copyright © 2011-2022 走看看