zoukankan      html  css  js  c++  java
  • MongoDB入门三步曲1--安装、基本操作

    mongodb 基本操作

    目录

    mongodb安装

    下载tgz文件,直接tar -zxv -f 解压,放到/usr/local目录下,这个可以根据需要决定目录位置。
    然后再单独设置个数据及日志目录,例如:/var/mongodb,这个也根据需要自己设置。
    之所以把安装目录和数据目录,是为了保持各自的清晰性。因为使用同一个mongodb可以启动多个mongod实例,而这不同的实例需要对应不同的数据空间,因此分开存放还是有好处的。

    mongod启动

    sudo -u mongodb /usr/local/mongodb/bin/mongod --dbpath=/var/mongodb/data --logpath=/var/mongodb/logs/log.log -fork

    通过此命令即可启动一个mongod实例,即mongo db的服务实例,启动参数简单说明一下:

    • sudo -u mongodb 这个是为了权限清晰,单独为mongodb设置了一个用户及用户组,然后mongdb的运行都是基于此用户完成;
    • /usr/local/mongodb/bin/mongod 这个是真实的启动命令,即启动mongod服务
    • --dbpath及--logpath 指定数据目录及日志目录
    • -fork 让服务程序后台运行
    • --port 还可以使用--port指定服务端口号,不指定时默认使用27017端口

    mongo shell启动

    在安装mongodb的时候,除了安装mongod服务外,还提供了一个shell操作接口,通过如下命令启动mongo shell

    sudo -u mongodb /usr/local/mongodb/bin/mongo 127.0.0.1:27017 

    mongo shell后面的主机及端口号不是必须的,如果不指定即使用默认的地址:127.0.0.1:27017
    启动mongo shell后,默认进入的是test库,可以使用use admin,切换到admin数据库中。

    mongod 停止

    在mongo shell中,切换到admin库后,使用如下命令即关闭mongod服务。

    use admin
    db.shutdownServer()

    关闭完mongod服务后,mongo shell即会与服务失去连接,使用bye即可退出mongo shell。

    mongodb基本操作:CRUD

    数据插入

    C即数据创建,在mongodb中,使用db.collection.insert()即可,collection为集合名。
    以下的操作,都假设在test空间下完成,使用use test切换。
    如下命令往blog集合中添加一条记录:

    db.blog.insert({"title":"mongodb test", "content":"this is the first mongodb insert test!"}) 

    mongodb使用BSON(JSON扩展)格式的数据存储,在集合中,对数据记录没有特定模式的要求,虽然在上面的记录中有两个key: title和content,但下面的命令同样可以向blog集合中插入数据:

    db.blog.insert({"msg":"this is a error msg"})

    在mongodb中无须显示创建集合,在插入数据时,如果没有此集合会自动创建,如上面的blog集合。
    另外mongodb尚未提供原生的批量插入,但可以通过脚本完成批量。

    for(var i = 0; i < 100; i++) {
      db.blog.insert({"title":"mongodb" + i, "content":"content" + i});
    }

    数据查询

    R即数据查询,在mongo shell中,有三种查询操作:

    • db.collection.find():基本的查询操作,会返回所有满足条件的结果
    • db.collection.findOne():基本的查询操作,只返回满足条件的第一条结果
    • db.collection.findAndModify():查询并更新操作,在后面的更新操作中讲解

    在查询中需要指定查询条件,其中的查询条件即是以json表示的key-value对,如下:

    db.person.find({"name":"enjiex"}) 

    想必你已经知道如何插入数据,所以这里直接执行查询了。上面这条记录会把name="enjiex"的所有记录都查询出来。
    除了这种基本的相等查询外,mongodb也支持数据比较及逻辑判断操作:

    比较操作符:$gt,$gte,$lt,$lte,$ne

    db.person.find({"age":{$gt:20}})

    与或运算符:$or
    与操作没有专门的操作符,只需要把多个查询条件在json中以","隔开即可:

    db.person.find({"name":"enjiex", "age":20}) 

    或操作

    db.person.find({$or:[{"name":"enjiex"}, {"age":20}]}) 

    包含操作:$in, $nin

    db.person.find({"name":{$in:["enjiex", "mc"]}})

    除了上面几个操作外,mongodb还提供了$where操作符用于完成复杂的数据查询

    db.person.find({$where:function(){return this.name=="enjiex"}}) 

    可以看出,$where操作符后面跟着一个返回boolean类型的方法定义。在这个方法中可以完成复杂的条件判断,并最后返回boolean值,mongodb就会把集合中满足方法中定义的条件的结果返回。

    上面的查询条件对于find()和findOne()都是适用的。

    数据更新

    U即数据更新,在mongodb中提供了多种数据更新手段:

    • 替换更新:db.person.update(condition, model)
    • 更新插入:db.person.update(condition, model, true)
    • 批量更新:db.person.update(condition, model, true, true)
    • $inc和$set更新: db.person.update(condition, {$set:{"name":"enjiex"}})

    默认情况下,mongodb 默认情况下将会把更新的内容替换掉第一条满足条件的记录。假如我们有条记录{"name":"enjiex", "age":20},执行完如下命令,此条记录就变成{"name":"mc"},也就是说满足条件的记录被替换掉了。

    db.person.update({"name":"enjiex"}, {"name":"mc"}) 

    这在很多情况下并非是我们想要的结果,也许我们只想把name由"enjiex"变为"mc",但同时保留"age":20,怎么做呢,使用"$set"啊。如下:

    db.person.update({"name":"enjiex"}, {$set:{"name":"mc"}}) 

    这样就ok了。
    有些场景,如果数据库集合中没有此记录,我们可能想把此记录插入到集合中,在mongodb中也可以完成,只要在update方法指定第三个参数为true。如下:

    db.person.update({"name":"csdn"}, {$set: {"name":"mc"}}, true) 

    操作完成后,查看数据集合就会发现多了一条{"name":"mc"}的记录。
    那上面的操作都只对第一条满足条件的记录做更新,假如集合中有多条数据需要修改呢,只需要给update指定第四个参数为true即可。

    上面的第三个参数和第四个参数,默认为false,并且对于替换更新和$set更新都有效。

    数据删除

    D对应于数据删除,在mongodb中,删除也很简单,即db.collection.remove(condition),如果想删除上面插入的name="csdn"的数据,执行如下命令即可:

    db.person.remove({"name":"csdn"}) 

    且记如果不给remove指定参数,mongodb会删除集合中的所有数据,一定谨慎使用。

    集合删除

    除了上面的操作外,我们还需要删除不再需要的集合,很简单,一个drop命令即可完成:

    db.person.drop()
    || 一个理想主义者
  • 相关阅读:
    充满了艰难的造题之幼儿园测试【历史考试】
    【大型网站技术实践】初级篇:借助Nginx搭建反向代理服务器
    windows下nginx的安装使用及解决80端口被占用nginx不能启动的问题
    使用hMailServer搭建免费邮件服务器(亲测可用)
    $.ajax()方法详解
    详细解读Jquery各Ajax函数:$.get(),$.post(),$.ajax(),$.getJSON()
    $.ajax()调用.cs里的方法实现ajax操作示例
    Asp.Net URL重写的具体实现(通过URLRewriter.dll)
    数据图
    C#解析JSON字符串总结
  • 原文地址:https://www.cnblogs.com/enjiex/p/3573658.html
Copyright © 2011-2022 走看看