MongoDB的操作

mongoDB的概念

  1. MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。
  2. MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
  3. MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

mongoDB的安装与启动

  1. 安装mongoDB
brew install mongodb
  1. 新建文件夹 (名字自取) 这里以database
  2. 启动mongodb服务器
 mongod --dbpath=文件路径
  1. 进入服务器环境
mongo
  1. 查看数据库
show dbs

初始数据库的状态


19DB3BBEC6E07E186364E463F476330C.png

mongoDB的操作

操作mongo基础

下面是数据库与mongoDB的对比图,构成有相似的,也有不同的


6256A0FE1A648795B3EF021425581CB0.png
  1. 创建数据库
    先use 要创建的数据库名,如果数据库名已存在,则切换到此数据库中;如不存在,则创建数据库
// 创建一个users数据库
user users
  1. 创建一个数据库集合person,并添加数据
db.person.insert({name:"张三",age:20})
  1. 查看当前使用的数据库
db
  1. 删除数据库
db.dropDatabase() 
  1. 断开连接
exit

操作集合

  1. 查看当前数据库下有哪些集合
show collections
  1. 创建集合
db.createCollection(collection_Name)
  1. 删除集合
db.collection_Name.drop()

文档操作

这里以person集合为例
1.insert 添加数据:
db.COLLECTIONNAME.insert({name:"张三",age:20})

db.person.insert({name:'马云',age:37})
  1. save 添加与更新:
    如果通过id能找到就是更新,如果找不到就是添加;
  • 添加
db.person.save({name:"李四"})
  • 更新
db.person.save({'_id':ObjectId("5a67f5221df8d5687e847094"),name:'王五',age:21}
  1. update 更新:(默认更新符合条件的第一条)
    db.COLLECTIONNAME.update({条件},{更新的内容},{配置项(如果要更新能够匹配的多个选项 multi:true)})
    下列更新名字叫马云的年龄为42
db.person.update({name:"马云"},{$set:{age:42}})

如果表中有多个马云,若想更新所有名字叫马云的年龄,就需要使用到第三个参数multi

db.person.update({name:"马云"},{$set:{age:18}},{multi:true})
  1. remove 删除:(默认删除符合条件的所有数据)
    db.COLLECTIONNAME.remove({name:'张三'},{配置项(可选:justOne)});
    删除名字叫马云的一条数据,需配置第三个参数justOne
db.person.remove({name:'马云'},{justOne:true})
  1. find数据的查询
  • 所有数据的查询
    db.COLLECTIONNAME.find()
db.person.find()

集合person中的字段


860A4BC9ACFD105C617F75ED5E26A0DA.png
  • find({条件},{字段})
    条件:大于gt 小于lt 大于等于gte 小于等于 lte 不等于 ne;等于就直接使用冒号
  1. 第一个参数:
    查询大于28的数据
db.person.find({age:{$gt:28}})

查询年龄等于30的数据

db.person.find({age:30})
  1. 第二个参数:字段 如:{name:1,age:1}
    查询年龄大于28的所有名字
db.person.find({age:{$gt:28}},{name:1})

查询结果中除了id便只有name一个字段,第二个参数限定需要查询的字段


CFC06F0A971EB48185C4778065599FEE.png
  • like 关键字
    在mongoDB的操作中比数据操作更加灵活,他可以用正则表达式查询各种条件的数据
    查询以"马"开头的数据 db.COLLECTIONNAME.find({name:/^马/})
db.person.find({name:/^马/})
  • 并且关系:直接写在对象里,逗号隔开
    查询数据名字是"马云"并且年龄是48;
db.person.find({name:'马云',age:40})
  • $or 或者关系
    查询年龄等于48或者28
db.person.find({$or:[{age:30},{age:40}]})
  • 分页:关键字skip和limit
    跳过两条从第三条开始查询两条数据
db.person.find().skip(2).limit(2)
  • 排序: 关键字sort
    参数:1代表正序;-1代表倒序
    以年龄正序排序
db.person.find().sort({age:1})
  • 查询数量: 关键字count
db.person.find().count();

上面这些的查询的命令单个看起来还挺容易的,但混合使用还是很容易出错的,这就需要大家细心的去写了。
最后写个简单的综合查询:
查询所有姓李或者是姓王的;按照年龄倒序排列;只查询结果的2条数据

db.person.find({$or:[{name:/^李/},{name:/^王/}]}).sort({age:-1}).skip(0).limit(2)

结束语

MongoDB的扩展性好,并且支持多种汇编语言,由于使用JSON形式的存储,使之更加容易查询文档中的对象或数组。好用的不要不要的。。。

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

推荐阅读更多精彩内容