zoukankan      html  css  js  c++  java
  • mongodb常用命令学习笔记

    mongodb常用命令学习笔记

    创建数据库

    use DATABASE_NAME
    
    eg:
    use users;
    
    

    如果数据库不存在,则创建数据库,否则切换到指定数据库。要显示刚刚创建的数据库,需要向数据库插入一些数据。

    删除数据库

    db.dropDatabase()
    

    删除当前数据库

    创建集合

    db.createCollection(name, options)
    
    参数说明:
    name: 要创建的集合名称
    options: 可选参数, 指定有关内存大小及索引的选项,可以是如下参数:
    字段	类型	描述
    capped	布尔	(可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。
    当该值为 true 时,必须指定 size 参数。
    autoIndexId	布尔	(可选)如为 true,自动在 _id 字段创建索引。默认为 false。
    size	数值	(可选)为固定集合指定一个最大值(以字节计)。
    如果 capped 为 true,也需要指定该字段。
    max	数值	(可选)指定固定集合中包含文档的最大数量。
    在插入文档时,MongoDB 首先检查固定集合的 size 字段,然后检查 max 字段。
    
    eg:
    db.createCollection(user);
    

    删除集合

    db.COLLECTION_NAME.drop();
    
    eg:
    db.user.drop();
    

    插入文档

    //向指定集合中插入一条文档数据
    db.COLLECTION_NAME.insert(document)
    
    eg:
    >db.user.insert({name: 'cs', age:12})
    
    //向指定集合中插入一条文档数据
    db.COLLECTION_NAME.insertOne(document)
    
    eg:
    >db.user.insertOne({name: 'cs', age:12})
    
    //向指定集合中插入多条文档数据
    db.COLLECTION_NAME.insertMany(documents)
    
    eg:
    >db.user.insertMany({name: 'cs', age:12},{name: 'cs', age:12})
    
    

    插入文档你也可以使用 db.user.save(document) 命令。如果不指定 _id 字段 save() 方法类似于 insert() 方法。如果指定 _id 字段,则会更新该 _id 的数据。

    更新文档

    update() 方法
    update() 方法用于更新已存在的文档。语法格式如下:

    db.COLLECTION_NAME.update(
    query,
    update,
    {
    upsert: boolean,
    multi: boolean,
    writeConcern: document
    }
    )
    参数说明:

    query : update的查询条件,类似sql update查询内where后面的。
    update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
    upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
    multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
    writeConcern :可选,抛出异常的级别。

    db.user.update({'name':'cs'},{$set:{'age':24}})
    

    还有另外两个方法可以更新
    db.COLLECTION_NAME.updateOne(query,update) 向指定集合更新单个文档
    db.COLLECTION_NAME.updateMany(query,update) 向指定集合更新多个文档

    删除文档

    db.COLLECTION_NAME.deleteOne(query) 删除单个文档
    db.COLLECTION_NAME.deleteMany(query) 删除多个文档

    db.user.deleteOne({'name':'cs'})
    

    查询文档

    db.COLLECTION_NAME.find(query, projection)
    query :可选,使用查询操作符指定查询条件
    projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。

    eg:
    db.user.find({'name':'cs'})
    

    除了 find() 方法之外,还有一个 findOne() 方法,它只返回一个文档。

    AND 条件

    条件传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件,复杂的情况下可以使用关键字$and,语法格式如下
    db.COLLECTION_NAME.find(
    {
    $and: [
    {key1: value1}, {key2:value2}
    ]
    }
    )

    OR 条件

    MongoDB OR 条件语句使用了关键字 $or,语法格式如下:

    db.COLLECTION_NAME.find(
    {
    $or: [
    {key1: value1}, {key2:value2}
    ]
    }
    )

    条件操作符

    条件操作符用于比较两个表达式并从mongoDB集合中获取数据。

    $gt -------- greater than  >    
    $gte --------- gt equal  >=     
    $lt -------- less than  <   
    $lte --------- lt equal  <= 
    $ne ----------- not equal  !=   
    $eq  --------  equal  =    
    $in  -------    in []
    $nin ----------  not in []
    $not -----------  不匹配
    $all ----------  全匹配
    
    eg:
    db.user.find({age: {$gt: 22}});
    db.user.find({age: {$in: [20,23,24,25]}});
    

    Limit

    limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数。

    db.COLLECTION_NAME.find().limit(NUMBER)

    Skip

    skip()方法来跳过指定数量的数据,skip方法同样接受一个数字参数作为跳过的记录条数。

    db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)

    sort()

    sort()方法对数据进行排序,sort()方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而-1是用于降序排列。

    db.COLLECTION_NAME.find().sort({KEY:1})

    count()

    sort()方法返回文档的数量
    db.COLLECTION_NAME.find().count()

    索引

    索引通常能够极大的提高查询的效率,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构。

    创建索引

    db.COLLECTION_NAME.ensureIndex({KEY:1})

    其中 Key 值为你要创建的索引字段,1为指定按升序创建索引,如果你想按降序来创建索引指定为-1即可,可以设置使用多个字段创建索引(关系型数据库中称作复合索引)。

    ensureIndex() 接收可选参数,可选参数列表如下:

    Parameter Type Description
    background Boolean 建索引过程会阻塞其它数据库操作,background可指定以后台方式创建索引,即增加 "background" 可选参数。 "background" 默认值为false。
    unique Boolean 建立的索引是否唯一。指定为true创建唯一索引。默认值为false.
    name string 索引的名称。如果未指定,MongoDB的通过连接索引的字段名和排序顺序生成一个索引名称。
    dropDups Boolean 在建立唯一索引时是否删除重复记录,指定 true 创建唯一索引。默认值为 false.
    sparse Boolean 对文档中不存在的字段数据不启用索引;这个参数需要特别注意,如果设置为true的话,在索引字段中不会查询出不包含对应字段的文档.。默认值为 false.
    expireAfterSeconds integer 指定一个以秒为单位的数值,完成 TTL设定,设定集合的生存时间。
    v index version 索引的版本号。默认的索引版本取决于mongod创建索引时运行的版本。
    weights document 索引权重值,数值在 1 到 99,999 之间,表示该索引相对于其他索引字段的得分权重。
    default_language string 对于文本索引,该参数决定了停用词及词干和词器的规则的列表。 默认为英语
    language_override string 对于文本索引,该参数指定了包含在文档中的字段名,语言覆盖默认的language,默认值为 language.

    删除指定索引

    db.COLLECTION_NAME.dropIndex(INDEX_NAME)

    聚合

    MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果

    db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)

    下表展示了一些聚合的表达式:

    表达式 描述 实例
    $sum 计算总和。 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}])
    $avg 计算平均值 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}])
    $min 获取集合中所有文档对应值得最小值。 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}])
    $max 获取集合中所有文档对应值得最大值。 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}])
    $push 在结果文档中插入值到一个数组中。 db.mycol.aggregate([{$group : {_id : "$by_user", url : {$push: "$url"}}}])
    $addToSet 在结果文档中插入值到一个数组中,但不创建副本。 db.mycol.aggregate([{$group : {_id : "$by_user", url : {$addToSet : "$url"}}}])
    $first 根据资源文档的排序获取第一个文档数据。 db.mycol.aggregate([{$group : {_id : "$by_user", first_url : {$first : "$url"}}}])
    $last 根据资源文档的排序获取最后一个文档数据 db.mycol.aggregate([{$group : {_id : "$by_user", last_url : {$last : "$url"}}}])

  • 相关阅读:
    ORACLE 查看进程数,已执行任务数, 剩余任务数,删除指定任务
    ORACLE 收集统计整个用户数据
    解决Hystrix dashboard Turbine 一直 Loading…… 及其他坑
    利用 Maven 构造 Spring Cloud 微服务架构 模块使用 spring Boot构建
    AES加解密
    JAVA POI XSSFWorkbook导出扩展名为xlsx的Excel,附带weblogic 项目导出Excel文件错误的解决方案
    JAVA 文件的上传下载
    shell启停服务脚本模板
    JAVA 设计模式之 原型模式详解
    JAVA 设计模式之 工厂模式详解
  • 原文地址:https://www.cnblogs.com/SLchuck/p/9020784.html
Copyright © 2011-2022 走看看