• MongoDB基本操作


    该文章简单记录了在shell命令中的基本操作,方便随时查看

    1、创建或连接到指定的数据库:use dbname


    2、删除数据库:db.dropDatabase()

    注:必须指定了一个数据库之后才能删除这个数据库,即使用了use命令之后


    3、显示所有数据库:show dbs


    4、显示当前数据库对象或集合:db


    5、创建一个集合(相当于数据库中的表):db.createCollection("tablename")

    带参数的用法举例:db.createCollection("mycol",{ capped : true, autoIndexId : true, size : 6142800, max : 10000})
    说明:创建固定集合mycol,整个集合大小空间6142800KB,文档最大个数为10000个


    6、显示数据库中所有的集合:show tables 或者 show collections


    7、删除一个集合:db.tablename.drop()


    8、插入数据:db.tablename.insert({name:"JS"})

    在一个数据库中,不需要专门创建一个集合,当插入一些文档时mongodb会自动创建集合


    9、更新数据:
    db.tablename.update({colname:colvalue},{$set:{cloname:newvalue}},true/false,true/false)

    后面两个参数说明:
    (1)省略的状态,只更新第一条记录
    (2)false,true,全部更新
    (3)true,false,只添加第一条
    (4)true,true,全部添加进去
    (5)false,false,只更新第一条记录,同(1)


    10、删除一条记录:db.tablename.remove({colname:colvalue})
    说明:如果只想删除第一条找到的记录,可以讲第二个参数设置为1,实际上,不管将第二个参数设置为几,都会删除找到的第一条记录db.tablename.remove({colname:colvalue}, 1)
    网友评论说remove()的方法已经过时,现在官方推荐使用deleteOne()和deleteMany()
    使用方法如下:
    (1)删除集合下全部文档:db.tablename.deleteMany({})
    (2)删除status等于A的全部文档:db.tablename.deleteMany({status:"A"})
    (3)删除status等于D的一个文档:db.tablename.deleteOne({status:"D"})

    经本人测试,截至该文章发布之时,均可用

    11、查询文档:db.tablename.find()
    可在find()后添加pretty()显示易读的格式:db.tablename.find().pretty()
    AND条件查询:db.tablename.find({key1:value1,key2:value2}),相当于SQL的AND
    OR条件查询:db.tablename.find({ $or: [{key1:value1},{key2:value2}]}),相当于SQL的OR
    也可以对AND和OR联合使用


    12、操作符
    (1)大于>:$gt(greater than) 例如:db.col.find({likes : {$gte : 100}})——>获取"col"集合中 "likes" 大于等于 100 的数据
    (2)小于<:$lt(less than)
    (3)大于等于≥:$gte(greater than or equal)
    (4)小于等于≤:$lte(less than or equal)
    (5)不等于!=:$ne(not equal)
    (6)等于=:$eq(equal)
    获取某个范围内的值:db.col.find({likes : {$lt :200, $gt : 100}})——>获取"col"集合中 "likes" 大于100,小于 200 的数据
    补充模糊查询:查询 title 包含"教"字的文档——>db.col.find({title:/教/})
    查询 title 字段以"教"字开头的文档——>db.col.find({title:/^教/})
    查询 titl e字段以"教"字结尾的文档——>db.col.find({title:/教$/})

    13、type操作符
    MongoDB 中可以使用的类型如下表所示:

    注:表格资源来源于菜鸟教程

    类型数字 备注
    Double 1  
    String 2  
    Object 3  
    Array 4  
    Binary data 5  
    Undefined 6 已废弃。
    Object id 7  
    Boolean 8  
    Date 9  
    Null 10  
    Regular Expression 11  
    JavaScript 13  
    Symbol 14  
    JavaScript (with scope) 15  
    32-bit integer 16  
    Timestamp 17  
    64-bit integer 18  
    Min key 255 Query with -1.
    Max key 127  

    使用举例:如果想获取 "col" 集合中 title 为 String 的数据,你可以使用以下命令:

    db.col.find({title:{$type:2}}) 或者 db.col.find({title:{$type:'string'}})

    注:在字符串的引用中,可以使用双引号,也可以使用单引号,如上面的string类型的引用,亲测效果一致,但是如果不使用引号时,就会报错;在插入数据时,如果想插入字符串类型的内容,不使用引号则会报错,如下图所示

    但如果插入的内容是数值类型,添加引号与不添加引号时也是不一样的,如下图所示,同样level为2的数据,当筛选level为string类型的数据时,只有一行数据被筛选出来

     

    14、读取指定数量的数据记录:db.tablename.find().limit(number)

    相当于SQL中的TOP N

    15、读取跳过前面指定行数的数据记录:db.tablename.find().skip(number)

    说明:如果number为1,则显示第一行之后的所有数据,即显示从第二行开始的数据,以此类推

    这个方法相当于是limit()的取反操作

    16、排序

      db.tablename.find().sort({colname:1}) ——升序排列

      db.tablename.find().sort({colname:-1})——降序排列

    注:skip(), limilt(), sort()三个放在一起执行的时候,执行的顺序是先 sort(), 然后是 skip(),最后是显示的 limit()

    17、索引

      1)创建索引:db.tablename.createIndex({colname:1})——1为指定按升序创建索引,-1则为降序

      2)创建复合索引:db.tablename.createIndex({colname1:1,colname2:-1})

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

      举例:在后台创建索引:db.tablename.createIndex({colname1:1,colname2:-1},{background:true})

    Parameter Type Description
    background Boolean 建索引过程会阻塞其它数据库操作,background可指定以后台方式创建索引,即增加 "background" 可选参数。 "background" 默认值为false
    unique Boolean 建立的索引是否唯一。指定为true创建唯一索引。默认值为false.
    name string 索引的名称。如果未指定,MongoDB的通过连接索引的字段名和排序顺序生成一个索引名称。
    dropDups Boolean 3.0+版本已废弃。在建立唯一索引时是否删除重复记录,指定 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.
  • 相关阅读:
    python day1
    Vue与react的择决
    CommonJS规范
    js面向对象的程序设计
    正则匹配所有的a标签
    js-静态、原型、实例属性
    js中参数不对应问题
    sublime常用快捷键
    JSON.parse()和JSON.stringify()
    setAttribute()
  • 原文地址:https://www.cnblogs.com/ykagile/p/13397345.html
Copyright © 2020-2023  润新知