• MongoDB 基础知识二


    MongoDB客户端

    下面我们进入MongoDB的shell 进行一些实际操作

    1.首先打开MongoDB的服务

    2.打开shell工具

    3.选择数据库 (默认是使用test数据库)

    > use foobar

    switched to db foobar

    如何要查看当前的数据库名字可以使用

    >db

    foobar

    foobar就是当前所使用的数据库

    shell 中的基本操作

    1.创建

    insert 函数添加一个文档到集合,例如,假设要储存一篇博客文章。首先,创建一个局部变量post,内容是代表稳文档的Javascript对象。里面会有“title","content"和”data"几个键。

    > post={"title" : "My Blog Post" , "content" : "Here's My blog post." ,"data" :
    new Date()}
    {
    "title" : "My Blog Post",
    "content" : "Here's My blog post.",
    "data" : ISODate("2014-03-21T14:48:40.221Z")
    }

    这个对象是有效的MongoDB文档,所以可以用insert方法将其保存到blog集合中:

    > db.blog.insert(post)

    这片文章已经被存到数据库里面了。可以调用集合的find方法来查看一下;

    > db.blog.find()
    { "_id" : ObjectId("532c5211753513899b597e09"), "title" : "My Blog Post", "conte
    nt" : "Here's My blog post.", "data" : ISODate("2014-03-21T14:48:40.221Z") }

    2.读取

    find会返回集合里面所有的文档。若只是想查看一下文档,可以用findOne:

    > db.blog.findOne()
    {
    "_id" : ObjectId("532c5211753513899b597e09"),
    "title" : "My Blog Post",
    "content" : "Here's My blog post.",
    "data" : ISODate("2014-03-21T14:48:40.221Z")
    }

    find和findOne可以接受查询文档形式的限定条件。这将通过查询限制匹配的文档。使用find时,shell自动显示最多20个匹配的文档,但可以获取更多文档,以后会有提到

    3 更新

    如果要更改博客文章,就要用到update了,update接受(至少)两个参数:第一个是要更新文档的限定条件,第二个是新的文档。假设觉得给我们先前写的文章添加评论内容,则需要增加一个新的键,对应的值是存放评论的数组。

    第一步修改变量post,增加“comments"键:

    > post.comments=[]
    [ ]

    然后执行update操作,用新版本的文档替换标题为“My Blog Post"的文章:

    > db.blog.update({title: "My Blog Post"},post)

    文档已经有了”comments"键。再用find查看一下,可以看到新的键:

    > db.blog.find()
    { "_id" : ObjectId("532c5211753513899b597e09"), "title" : "My Blog Post", "conte
    nt" : "Here's My blog post.", "data" : ISODate("2014-03-21T14:48:40.221Z"), "com
    ments" : [ ] }

    4.删除

    remove 用来从数据库中永久性的删除文档,在不使用参数进行调用的情况下,他会删除一个集合内的所有文档,它也可以接受一个文档以指定限定条件。例如,下面的命令会删除我们刚刚创建的文章:

    > db.blog.remove({title : "My Blog Post"})
    > db.blog.find()
    >

    集合现在又是空的了。

    使用shell的窍门

    由于mongo是个Javascript shell,通过在线查看Javascript的文档能获得更多帮助。shell本事内置了帮助文档,可以通过help命令查看

    > help
    db.help() help on db methods
    db.mycoll.help() help on collection methods
    sh.help() sharding helpers
    rs.help() replica set helpers
    help admin administrative help
    help connect connecting to a db help
    help keys key shortcuts
    help misc misc things to know
    help mr mapreduce

    ...

    使用db.help() 可以查看数据库级别的命令的帮助,集合的相关班组可以通过db.foo.help()来查看。

    有过了解函数功能的技巧,就是在输入的时候不要输括号。这有就会显示该函数的Javascript源代码。例如,想看看 update的机理,活受罪是为了看看那参数顺序,可以这么做:

    > db.foo.update
    function ( query , obj , upsert , multi ){
    assert( query , "need a query" );
    assert( obj , "need an object" );

    var firstKey = null;
    for (var k in obj) { firstKey = k; break; }

    if (firstKey != null && firstKey[0] == '$') {
    // for mods we only validate partially, for example keys may have dots
    this._validateObject( obj );
    } else {
    // we're basically inserting a brand new object, do full validation
    this._validateForStorage( obj );
    }

    // can pass options via object for improved readability
    if ( typeof(upsert) === 'object' ) {
    assert( multi === undefined, "Fourth argument must be empty when specify
    ing upsert and multi with an object." );

    opts = upsert;
    multi = opts.multi;
    upsert = opts.upsert;
    }

    var startTime = (typeof(_verboseShell) === 'undefined' ||
    !_verboseShell) ? 0 : new Date().getTime();
    this._mongo.update( this._fullName , query , obj , upsert ? true : false , m
    ulti ? true : false );
    this._printExtraInfo("Updated", startTime);
    }

    要查看shell提供所有自动生成的Javascript函数API文档,可以访问http://api.mongodb.org/js

    蹩脚的集合名

    使用db.集合名的方式来访问集合一般不会有问题,但如果集合名恰好是数据库类的一个属性就有问题了。例如,要访问version这个集合,使用db.version就不行,因为db.version是个数据库函数(返回mongodb服务器版本)

    > db.version
    function (){
    return this.serverBuildInfo().version;
    }

    但Javascript只有在DB中找不到指定的属性石,才会将其作为集合返回。当属性与目标集合同名时,可以使用一个叫做getCollection的函数:

    > db.getCollection("version")
    test.version

     

     要查看名称中含有无效Javascript字符的集合,这个函数也可以派上用场,比如foo-bar 是个有效的集合名,但是在JavaScript中就变成了变量相减了。通过db.getCollection("foo-bax")可以得到foo-bax集合

    在JavaScript中,x.y与x['y']完全等价。这就意味着不但可以自呼其名,也可以使用变量来访问子集合。也就是说,当需要对blog的每个子集合执行操作时,只需要像下面这有迭代就好了:

     var collections=["posts" , "comments" , "authors"];
     for (i in collections){doStuff{db.blog[collections[i]]}}  

    ps:doStuff非Mongodb的内置函数 只是一个大致的说明 告诉你这里面做了一些操作而已 再shell里面运行会提示错误的 因为你没有这个function

    而不是使用下面这种笨笨的写法:

    doStuff(db.blog.posts);

    doStuff(db.blog.comments);

    doStuff(db.blog.authors);

     2014-03-22 00:02:38

  • 相关阅读:
    ubuntu 10.04 install network bcm4418
    linux vi commend
    api
    ubuntu安装jdk
    maven常用命令介绍
    ubuntu 10.04 install oracle11g
    putty中文乱码问题解决
    SCP不需要密码
    java command
    Ubuntu vsftpd 安装配置
  • 原文地址:https://www.cnblogs.com/ElvinLong/p/3613885.html
Copyright © 2020-2023  润新知