美文网首页
MongoDB总结(一)

MongoDB总结(一)

作者: Cinque_Peng | 来源:发表于2017-12-11 15:49 被阅读0次

    涨姿势

    1.MySQL与Mongo中的一些概念对比:

    SQL术语/概念            MongoDB术语/概念            解释/说明
    database                database                    数据库
    table                   collection                  数据库表/集合
    row                     document                    数据记录行/文档
    column                  field                       数据字段(列)/域
    index                   index                       索引
    table joins                                         表连接,MongoDB不支持
    primary key             primary key                 主键,MongoDB自动将_id字段设置为主键
    

    基本语法规则

    1.DDL语法(操作数据库及表的结构)

    ----++----对数据库的操作----++----
    1.1 查看所有数据库

    show dbs    #查看所有数据库
    db  #查看当前数据库
    

    1.2 创建及使用数据库:

    #若没有此数据库则创建
    use tbl
    

    1.3删除数据库

    #删除当前数据库
    db.dropDatabases()
    

    ----++----对集合结构(MySQL中的表)的操作----++----

    1.4 创建集合

    db.createCollection(name,options)
    db.createCollection("mycol", {capped : true, autoIndexId : true, size : 6142800, max : 10000 })
    e.g.    db.createCollection("mycollection") 
    

    options参数是可选的,因此只需要指定集合的名称。 以下是可以使用的选项列表:

    字段                  类型                  描述
    capped              Boolean(可选)          如果为true,则启用封闭的集合。上限集合是固定大小的集合,它在达到其最大大小时自动覆盖其最旧的条目。 如果指定true,则还需要指定size参数。
    autoIndexId         Boolean (可选)         如果为true,则在_id字段上自动创建索引。默认值为false。
    size                数字  (可选)            指定上限集合的最大大小(以字节为单位)。 如果capped为true,那么还需要指定此字段的值。
    max                 数字  (可选)            指定上限集合中允许的最大文档数。
    

    在插入文档时,MongoDB首先检查上限集合capped字段的大小,然后检查max字段。

    1.5 查看数据库中的所有集合

    show collections
    或
    show tables
    

    1.6 查看集合的结构

    db.mycol1.find()
    

    1.7 删除集合

    db.mycol1.drop()
    

    修改集合:

    mongoDB没有表的概念,都是一个个集合,所以这里只说一个修改集合的键值的方法。

    1.8 修改集合之修改键值(MySQL中对应为字段名)

    db.mycol1.update({}, {$rename:{"旧键名称":"新键名称"}}, false, true)
    

    第一个false表示:可选,这个参数的意思是,如果不存在update的记录,true为插入新的记录,默认是false,不插入。

    第二个true表示:可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。

    2.DDL语法(数据操作)

    2.1 增

    法一:

    db.mycol1.insert({
        name:'zhangsan',
        age:23,
        phone:1877768121
    })
    

    法二:

    document = ({
        name:'lisi',
        age:19,
        phone:15633577595
    });
    
    db.mycol1.insert(document)
    

    2.2 改

    2.2.1 update()方法

    db.collection.update(criteria,objNew,upsert,multi)

    参数说明:
    query:用于设置查询条件的对象,可以理解为sql查询中的where后面的
    update:用于设置更新内容的对象,也可以理解为sql update查询内set后面的
    upsert:如果记录不存在是否新增一个记录,默认false
    multi:如果有多个符合条件的记录,是否全部更新,默认为false
    writeConcern :可选,抛出异常的级别。

    db.mycol1.update(
       <query>,
       <update>,
       {
         upsert: <boolean>,
         multi: <boolean>,
         writeConcern: <document>
       }
    )
    

    e.g.

    #将用户名称为"zhangsan"用户的年龄更改为18。    
    db.col_1.update({name:'zhangsan'},{$set:{age:18}})
    #后面默认为false,false,这两个组合可以分出很多情况。
    

    2.2.1 save()方法

    save()方法为替换原有文档

    db.mycol1.save({
        "_id" : ObjectId("56064f89ade2f21f36b03136"),
        "title" : "MongoDB",
        "description" : "MongoDB 是一个 Nosql 数据库",
        "by" : "Runoob",
        "url" : "http://www.runoob.com",
        "tags" : [
                "mongodb",
                "NoSQL"
        ],
        "likes" : 110
    })
    

    2.3 删

    db.collection.remove(
       <query>,
       {
         justOne: <boolean>,
         writeConcern: <document>
       }
    )
    以下为实例:
    
    #删除所有的文档
    db.mycol1.remove({})
    
    #移除集合中查询到的数据的第一条,后面设成1或者true,表示只删除一个文档。
    db.mycol1.romve({name:'zhangsan'},1)
    

    3.DQL语法(数据查询)

    3.1 基础语法:

    MongoDB 查询数据的语法格式如下:
    db.collection.find(query, projection)
    query :可选,使用查询操作符指定查询条件
    projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
    如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:
    >db.col.find().pretty()
    pretty() 方法以格式化的方式来显示所有文档。
    

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    db.mycol1.find()        #查询所有文档
    db.mycol1.findOne()     #查询第一个文档
    db.mycol1.find().pretty()   #查询所有文档并格式化输出
    db.mycol1.find().count()    #查询到的文档的数目
    db.mycol1.find().skip()     #跳过指定数量的数据
    db.mycol1.find().limit()    #显示文档数
    
    e.g.读取十条数据后的100条记录
    db.mycol1.find().skip(10).limit(100)
    

    3.2 查询+where语句

    如果你想获取"col"集合中 "likes" 大于100,小于 200 的数据,你可以使用以下命令:

    db.mycol1.find({likes : {$lt :200, $gt : 100}})
    
    // 类似于SQL语句:
    Select * from mycol1 where likes>100 AND  likes<200;
    
    条件操作符       中文          全英文
        $gt         大于          greater than
        $gte        大于等于       greater than equal
        $lt         小于           less than
        $lte        小于等于        less than equal
        $ne         不等于         not equal
    

    3.3 AND条件

    find() 方法可以传入多个键(key),每个键(key)以逗号隔开,语法格式如下:

    db.col_1.find({name:'zhangsan',age:18}).pretty()
    

    3.4 OR 条件

    db.col_1.find({$or:[{name:'zhangsan'},{age:20}]}).pretty()
    

    3.5 AND 和 OR 联合使用

    db.col_1.find({"likes":{$gt:50},$or:[{age:20},{phone:15633577595}]}).pretty()
    

    3.6 $exists()

    $exists,用于查询集合中存在某个键的文档或不存在某个键的文档,例如查询col_1集合中存在name键的所有文档

    db.col_1.find({name:{$exists:1}})
    

    3.7 $in和$nin

    查询年龄在18,19,20在这个区间的文档

    db.col_1.find({age:{$in:[18,19,20]}})
    

    查询年龄不在18,19,20在这个区间的文档

    db.col_1.find({age:{$nin:[18,19,20]}})
    

    部分部署可参考:http://blog.csdn.net/sinat_36841379/article/details/70653027

    相关文章

      网友评论

          本文标题:MongoDB总结(一)

          本文链接:https://www.haomeiwen.com/subject/exgiixtx.html