MongoDB 基础操作(一)

MongoDB 的安装

  • 在Linux上安装
    在Linux上安装MongoDB Community Edition和所需的依赖项。
  • 在macOS上安装
    从Homebrew软件包或MongoDB存档在macOS系统上安装MongoDB Community Edition。
  • 在Windows上安装
    在Windows系统上安装MongoDB Community Edition,并可选择将MongoDB作为Windows服务启动。

安装之后

... :\mongodb 中手动创建两个空文件夹
... :\mongodb\data\db
... :\mongodb\log
并在 ... :\mongodb\log 下面创建一个空的 mongo.log


MongoDB 的连接

运行服务器:

cd c:\mongodb\bin
mongod

启动之后

连接 MongoDB

cd c:\mongodb\bin
mongo

连接之后

可视化工具的使用

开启工具

连接 MongoDB

MongoDB 数据库的创建与删除

  • show dbs 显示已有数据库
显示已有数据库
  • use [集合名] 切换到指定)
切换数据库为 test
  • db 查看当前数据库
查看当前数据库
  • db.dropDatabase() 删除当前数据库
删除当前数据库
  • db.[集合名].find 查询当前数据库所有数据
查询当前数据库所有数据

注:

使用数据库但未向数据库插入数据的话,数据库不会被保留(重启 MongoDB 或切换目标数据库该数据库会被清除)


MongoDB 数据的增加与删除

  • db.[集合名].insert(数据信息) 插入单条数据
    例:
db.test.insert([{ item: "journal", qty: 25, status: "A", size: { h: 14, w: 21,
 uom: "cm" }, tags: [ "blank", "red" ] }])
插入单条数据
  • db.[集合名].insertMany(数据信息) 插入多条数据
    例:
db.test.insertMany([
   { item: "notebook", qty: 50, status: "A", size: { h: 8.5, w: 11, uom: "in" }, tags: [ "red", "blank" ] },
   { item: "paper", qty: 100, status: "D", size: { h: 8.5, w: 11, uom: "in" }, tags: [ "red", "blank", "plain" ] },
   { item: "planner", qty: 75, status: "D", size: { h: 22.85, w: 30, uom: "cm" }, tags: [ "blank", "red" ] },
   { item: "postcard", qty: 45, status: "A", size: { h: 10, w: 15.25, uom: "cm" }, tags: [ "blue" ] }
]);
插入多条数据
  • db.[集合名].insert(文档名) 插入整个文档
document=({item: "journal",
qty: 25, status: "A",
size: { h: 14, w: 21, uom: "cm" },
tags: [ "blank", "red" ]
});
db.test.insert(document)
插入整个文档
  • db.[集合名].remove(条件) 删除数据信息
    例:
db.test.remove({'item' : 'notebook'})
删除数据信息

注:

db.[集合名].remove({})
删除所有数据信息


MongoDB 数据的修改

  • db.collection.update( criteria, objNew, upsert, multi ) 更新数据

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

例:

更新符合条件的第一条记录(默认)
db.test.update({"item" : "journal"},{item: "notebook",qty: 25, status: "A",size: { h: 14, w: 21, uom: "cm" },tags: [ "blank", "red" ]});
更新符合条件的第一条记录
只添加第一条
db.test.update(条件, 新记录, true, false);
全部添加加进去
db.test.update(条件, 新记录, true, true);
全部更新
db.test.update(条件, 新记录, false, true);
只更新第一条记录
db.test.update(条件, 新记录, false, false);

MongoDB 数据的查找

  • db.[集合名].find() 查询当前数据库所有数据
查询当前数据库所有数据
  • db.[集合名].find().pretty() 规范化查询结果
规范化查询结果
  • db.[集合名].find(条件1, 条件2).pretty() 有条件的查询(默认用 AND 连接条件)
有条件的查询(默认用 AND 连接条件)
  • db.[集合名].find(条件1, $or:[条件2, 条件3]).pretty() 有条件的查询(AND 与 OR 的联合使用)
有条件的查询(AND 与 OR 的联合使用)

MongoDB 操作符的使用

条件操作符

  • (>) 大于 - $gt
  • (<) 小于 - $lt
  • (>=) 大于等于 - $gte
  • (<= ) 小于等于 - $lte
例:
// MongoDB 语法
db.test.find({"pty" : {$gt : 100}})
// 相当于 SQL 语法
Select * from test where pty > 100;

type 条件操作符

类型 数字 备注
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

Limit 与 Skip 方法

Limit()方法

  • db.集合名.find().limit(读取的记录条数Number) 读取指定数目的记录
db.test.find().limit(2)
读取 2 条记录

Skip()方法

  • db.集合名.find().skip(跳过的记录条数Number) 跳过指定数目的记录
db.test.find().limit(1).skip(1)
跳过 1 条记录,读取第 2 条记录
注:
  • limit() 方法中的参数默认显示集合中的所有数据。
  • skip() 方法默认参数为 0。

MongoDB 排序

  • db.集合名.find().sort({KEY: NUMBER}) 对数据进行排序
sort()参数说明:
  • KEY:指定排序的字段
  • NUMBER:使用 1 和 -1 指定排序的方式,其中 1 为升序排列,-1 位降序排列。
例:
db.test.find().sort({"qty": 1})
按 qty 升序进行排序
注:
  • sort() 方法中的参数默认为 1,按照文档的升序排列。

参考文档一: MongoDB 文档
参考文档二: MongoDB W3C文档

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

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 31,894评论 2 89
  • 从2012年初开始,公司的一些核心产品准备开始陆续迁移到MongoDB上,我们尝试着从一个小产品开始使用,陆续将其...
    UncleYee阅读 1,953评论 0 3
  • 在安装MongoDB后,启动服务器进程(mongod),可以通过在客户端命令mongo实现对MongoDB的管理和...
    63dc63c6bfe1阅读 217评论 0 0
  • 1.记账:口袋记账 我很高兴我的养肥金鹅之路从高中就开始了,高中时期开始记账,因为粉嫩的少女心和当时记日记的...
    JULY_seven阅读 516评论 0 0
  • 情绪和念想 总会相依相随,如胶似漆 越是抽离,越是沉重 有的时候,静如死水 有的时候, 山呼海啸般不可阻挡 所有的...
    石默_语阅读 377评论 5 8