zoukankan      html  css  js  c++  java
  • MongoDB的安装及CURD操作

    MongoDB的下载地址:http://www.mongodb.org/downloads MongoDB有32bit和64bit两个版本,32bit只能存放2GB数据。我们选择64bit版进行下载。

    下载完成之后就行安装。不再赘述。

    启动MongoDB服务器

    打开windows命令行,进入安装目录:

    image

    然后,使用命令 mongod –-dbpath d:mongodbdb 启动服务器:

    image

    当服务器启动以后,我们的文件系统如下:

    image

    连接MongoDB服务器

    使用命令 mongo 连接服务器:

    image

    此时连接的是我们本机的MongoDB,可以看到当前MongoDB的版本号,以及连接的数据库名称。

    指定远程服务器:

    mongo 192.168.1.200

    指定远程服务器、端口号:

    mongo 192.168.1.200:27017

    指定远程服务器、端口号、数据库:

    mongo 192.168.1.200:27017/mydb

    指定远程服务器、端口号、数据库、用户名、密码(未测试):

    mongo 192.168.1.200:27017/mydb –u user –p password

    在连接服务器之后,我们就可以进行CURD操作了。

    数据库信息

    使用命令db查看当前使用的数据库

    image

    使用use命令切换数据库。MongoDB的数据库在使用前不需要创建,直接use就可以了。数据表也是这样。

    image

    基本概念

    文档:文档是一组键值对,可以理解为数据行。例如:

    {name:"Tom", age:12}

    集合:集合是一个文档的集合,可以理解为数据表。集合存在于数据库中,且集合中的文档可以拥有不同的结构。

    数据库:数据库是一个集合的物理容器,MongoDB的数据库对应到自己设定的文件系统上面。

    插入操作(insert)

    在插入数据的时候,我们首先要选择要插入的集合。例如要将数据插入的user集合中,那么我们可以使用如下命令:

    db.user.insert({name:"Tom", age:12})

    执行效果如图:

    image

    集合中的文档可以有用不同的结构,例如我们也可以把下面的文档插入到user集合中:

    db.user.insert({name:"Jerry", sex:0})

    批量插入:

    var list = [{name:"Jack", age:13}, {name:"Lucy", age:12}];
    db.user.insert(list);

    执行效果如图:

    image

    查询操作

    使用find进行查找:

    db.user.find()

    目前我们的集合中有四行数据,不带参数的时候会返回所有文档:

    image

    我们会看到文档中有一个_id字段,这是MongoDB自动生成的,用来标记文档唯一性的,我们也可以自己指定这个值。

    参数查找

    转自一线码农:《8天学通MongoDB》系列

    日常开发中,我们玩查询,玩的最多的也就是二类:

         ①: >, >=, <, <=, !=, =。

         ②:And,OR,In,NotIn

    这些操作在mongodb里面都封装好了,下面就一一介绍:

        <1>"$gt", "$gte", "$lt", "$lte", "$ne", "没有特殊关键字",这些跟上面是一一对应的,举几个例子。

    12cff53n

    <2> "无关键字“, "$or", "$in","$nin" 同样我也是举几个例子

    weodpedk

    <3> 在mongodb中还有一个特殊的匹配,那就是“正则表达式”,这玩意威力很强的。

    fakzl5tr

    <4> 有时查询很复杂,很蛋疼,不过没关系,mongodb给我们祭出了大招,它就是$where,为什么这么说,是因为$where中的value

      就是我们非常熟悉,非常热爱的js来助我们一马平川。

    5t11qtdt

    更新操作

    使用update进行更新,更新的参数有三个,第一个是更新条件,第二个是新的文档,第三个是更新的选项,可以忽略。

    例如我们要更新Tom的年龄:

    db.user.update({name:"Tom"}, {name:"Tom", age:15})

    执行结果如下:

    image

    注意,这种更新是完整的更新,如果不给出name的值,将会把name字段删除掉。下面的内容来自一线码农:

    <1> 整体更新

             不知道大家可还记得,我在上一篇使用update的时候,其实那种update是属于整体更新。

    sg3s3btv

    <2> 局部更新

            有时候我们仅仅需要更新一个字段,而不是整体更新,那么我们该如何做呢?easy的问题,mongodb中已经给我们提供了两个

       修改器: $inc 和 $set。

    ①  $inc修改器

           $inc也就是increase的缩写,学过sql server 的同学应该很熟悉,比如我们做一个在线用户状态记录,每次修改会在原有的基础上

        自增$inc指定的值,如果“文档”中没有此key,则会创建key,下面的例子一看就懂。

    psaliv1x

    ② $set修改器

          啥也不说了,直接上代码

    s2h42pvv

    <3> upsert操作

         这个可是mongodb创造出来的“词”,大家还记得update方法的第一次参数是“查询条件”吗?,那么这个upsert操作就是说:如果我

    没有查到,我就在数据库里面新增一条,其实这样也有好处,就是避免了我在数据库里面判断是update还是add操作,使用起来很简单

    将update的第三个参数设为true即可。

    dfo0zmrd

    <4> 批量更新

         在mongodb中如果匹配多条,默认的情况下只更新第一条,那么如果我们有需求必须批量更新,那么在mongodb中实现也是很简单

    的,在update的第三个参数中,讲multi设置为true:

    db.user.update({},{$inc:{age:1}},{multi:true})

    删除操作

    直接使用remove进行删除,如果不带参数,则会提示需要一个参数:

    image

    也就是说remove操作必须要带一个参数,例如我们要删除user中的所有数据,我们可以使用下面的命令:

    db.user.remove({})

    执行效果如图:

    image

    本文参考并转自一线码农:《8天学通MongoDB》系列

  • 相关阅读:
    OneThink友情链接插件使用!
    OneThink生成分类树方法(list_to_tree)使用!
    OneThink视图模型进行组合查询!文档组合文档详情
    Atitit.数据操作dsl 的设计 ---linq 方案
    Atitit.数据操作dsl 的设计 ---linq 方案
    Atitit.Atiposter 发帖机 信息发布器 v7 q516
    Atitit.Atiposter 发帖机 信息发布器 v7 q516
    Atitit.http连接合并组件   ConnReducerV3 新特性
    Atitit.http连接合并组件   ConnReducerV3 新特性
    Atitit.减少http请求数方案
  • 原文地址:https://www.cnblogs.com/youring2/p/4892282.html
Copyright © 2011-2022 走看看