MongoDB数据库命令

你可以在mongodb官网下载该安装包,地址为:https://www.mongodb.com/download-center#community

window安装mongodb教程:https://www.runoob.com/mongodb/mongodb-window-install.html

linux安装mongodb教程:https://www.runoob.com/mongodb/mongodb-linux-install.html

Mac OSX 安装教程:https://www.runoob.com/mongodb/mongodb-osx-install.html

mongodb特点:

MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易。

你可以在MongoDB记录中设置任何属性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road")来实现更快的排序。

你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。

如果负载的增加(需要更多的存储空间和更强的处理能力) ,它可以分布在计算机网络中的其他节点上这就是所谓的分片。

Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。

MongoDb 使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段 。

Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作。

Map和Reduce。Map函数调用emit(key,value)遍历集合中所有的记录,将key与value传给Reduce函数进行处理。

Map函数和Reduce函数是使用Javascript编写的,并可以通过db.runCommand或mapreduce命令来执行MapReduce操作。

GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。

MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可。

MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。

MongoDB安装简单。

mongodb支持的数据类型:



查看当前数据库名称:db

列出所有在物理上存在的数据库:show dbs

切换数据库 如果跑数据库不存在,则指向数据库,但不创建,直到插入数据或创建集合时才创建:use 数据库名称

查看当前数据库信息:db.stats()

db:当前数据库的名字。

collections:当前数据库的集合数。

objects:当前数据库所有集合总所包含的对象(即文档)的数量。

avgObjSize:每个文档的平均大小(以字节为单位)。

dataSize:此数据库中保存的未压缩数据的总大小,不是

指占有磁盘大小,单位是bytes。

storageSize:分配给此数据库的集合用于存储文档的空

间总量,也就是当前数据库占有磁盘大小,单位是bytes。

numExtents:当前数据库所有集合包含的扩展数量的统计。

indexes:数据库中包含的所有集合的索引总数,也就是system.indexes表数据行数。

indexSize:此数据库上创建的所有索引的总大小,单位是bytes。


删除数据库:db.dropDatabase()

创建集合:db.createCollection(name,options)


查看当前数据库所有集合:show collections:当前数据库的集合数

删除集合:db.集合名称.drop()

插入文档:db.集合名称.insert(document)

注意:插入文档时,如果不指定_id参数,MongoDB会为文档分配一个唯一的ObjectId

多条插入:db.stu.insert([{name:'王明',gender:1},{name:'王玲玲',gender:0}])

查询全部文档:db.stu.find()

更新文档:update()     save()

update()更新已存在的文档

全文档更新:db.stu.update({name:'xxxxx'},{name:'张xxx'})

指定属性更新,通过操作符$set

db.stu.insert({name:'李自成',gender:1}) db.stu.update({name:'李自成'},{$set:{name:'闯王李自成'}})

修改多条匹配到的数据(跟新所有name为‘李自成’的文档的dender字段):

db.stu.update({name:'李自成'},{$set:{gender:0}},{multi:true})

save()方法:save() 方法通过传入的文档来替换已有文档,如果文档的_id已经存在则修改,如果文档的_id不存在则添加 db.集合名称.save(document)

db.stu.save({_id:'20180820101010','name':'保存',gender:1})

pretty():db.集合名称.find().pretty()

删除文档:remove()db.集合名称.remove(document)

:只删除1条,1表示是否只删除一条为true的意思

db.集合名称.remove(document,1)

db.集合名称.remove(document,{justOne:true})

表示删除全部

db.集合名称.remove({})

基本数据查询:db.集合名称.find({条件文档})

findOne():查询,只返回第一个

db.集合名称.findOne({条件文档})

比较运算符:

等于,默认是等于判断,没有运算符

小于$lt

小于或等于$lte

大于$gt

大于或等于$gte

不等于$ne

条件运算符:查询时可以有多个条件,多个条件之间需要通过逻辑运算符连接

逻辑与:默认是逻辑与的关系

逻辑或:使用$or:db.stu.find({$or:[{age:{$gt:18}},{gender:1}]})

and和or一起使用:db.stu.find({$or:[{age:{$gte:18}},{gender:1}],name:'gj'})

范围运算符使用"$in","$nin" 判断是否在某个范围内:db.stu.find({age:{$in:[18,28]}})

支持正则表达式:db.stu.find({name:/^黄/}) db.stu.find({name:{$regex:'^黄'}}})

自定义查询:db.stu.find({$where:function(){return this.age>20}})

$type:

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

db.col.find({"title" : {$type : 'string'}})

Limit与Skip方法:

limit() 方法读取指定数量的数据记录

基本语法如下所示:

db.COLLECTION_NAME.find().limit(num)

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

基本语法格式如下:

db.集合名称.find().skip(num)

limit() 方法、Skip() 方法 同时使用,不分先后顺序表示跳过多少条,返回多少条

查询第5至8条数据

db.stu.find().limit(4).skip(5)

db.stu.find().skip(5).limit(4)

sort() 方法排序:

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

基本语法如下所示:

升序

db.集合名称.find().sort({要排序的字段:1})

降序

db.集合名称.find().sort({要排序的字段:-1})

根据多个字段排序: 例:先根据年龄做降序,再根据性别做升序

db.集合名称.find().sort({age:-1,gender:1})

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

distinct() 去重

基本语法如下所示:

db.集合名称.distinct('去重字段',{条件})

例1:查找年龄大于20的姓名(去重)

db.集合名称.distinct('name',{age:{$gt:20}})

project投影(可以指定想要返回的字段)

在查询到的返回结果中,只选择必要的字段,而不是选择一个文档的整个字段

语法: 参数为字段与值,值为1表示显示,值为0不显示

db.集合名称.find({},{字段名称:0,...})

count() 统计个数

db.集合名称.count({条件})

表示返回集合中的文档数量

db.集合名称.find().count() db.集合名称.find({条件}).count()

在count()函数中添加条件

例:统计年龄大于20的男生人数

db.集合名称.count({age:{$gt:20},gender:1})

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,319评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,801评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,567评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,156评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,019评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,090评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,500评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,192评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,474评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,566评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,338评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,212评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,572评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,890评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,169评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,478评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,661评论 2 335

推荐阅读更多精彩内容