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.
posted @ 2020-07-29 15:20  冬日暖羊  阅读(196)  评论(0编辑  收藏  举报