MongoDB的基本使用

MongoDB 是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

安装MongoDB

  1. 下载mongodb
    1. github上下载源码,自己编译。
    2. 官网直接下载编译后的压缩包。
  2. 解压下载的压缩文件,如果是下载的源码,可以使用scons命令进行编译。
scons all
  1. 新建mongoldb目录,将解压后的mongodb-osx-x86_64-3.2.9文件中的bin目录移动到mongodb根目下
cp -r bin/ ~/mongodb

mongoldb目录下,创建data目录,用于放置mongoldb数据。在目录下,创建log目录,用于放置mongodb日志,以及conf目录,并在conf目录下,新建mongod.conf文件。

mkdir mongodb
cd mongodb
mkdir data
mkdir log
mkdir conf
cd conf

编辑mongod.conf文件,vi mongod.conf

port = 1234
dbpath = data
logpath = log
fork = true

MongoDB的启动和连接

  1. 开启mongodb,执行如下命令
bin/mongod -f conf/mongod.conf  //使用配置文件启动mogodb
  1. 使用mongo连接数据库
./bin/mongo 127.0.0.1:1234/test  //12345是端口号,替换为自己的
  1. 关闭数据库连接
db.shutdownServer()

名词解释

文档

文档是MongoDB的核心概念,多个键及其关联的值有序地放置在一起便是文档。 是一个json数据:

{name: 'jewelz', age: 22}

MongoDB不单区分类型,也区分大小写,还有,MongoDB的文档不能有重复的键。

集合

集合是一组文档。如果说MongoDB中的文档类似于关系型数据库中的行,那么集合就如同表。

数据库

MongoDB中多个文档组成集合,同样多个集合可以组成数据库。一个MongoDB实例可以承载多个数据库,数据库名可以是满足以下条件的任意UTF-8字符串

 - 不能是空字符串("")
 - 不能含有''(空格)、.、$、/、\和\0(空字符)
 - 应全部小写
 - 最多64字节

数据类型

MongoDB支持许多数据类型的列表下面给出:

类型|说明
:—: | : —
String | 这是最常用的数据类型来存储数据。在MongoDB中的字符串必须是有效的UTF-8。
Integer | 这种类型是用来存储一个数值。整数可以是32位或64位,这取决于您的服务器。
Boolean | 此类型用于存储一个布尔值 (true/ false) 。
Double | 这种类型是用来存储浮点值。
Min/ Max keys | 这种类型被用来对BSON元素的最低和最高值比较。
Arrays | 使用此类型的数组或列表或多个值存储到一个键。
Timestamp | 时间戳。这可以方便记录时的文件已被修改或添加。
Object | 此数据类型用于嵌入式的文件。
Null | 这种类型是用来存储一个Null值。
Symbol | 此数据类型用于字符串相同,但它通常是保留给特定符号类型的语言使用。
Date | 此数据类型用于存储当前日期或时间的UNIX时间格式。可以指定自己的日期和时间,日期和年,月,日到创建对象。
Object ID | 此数据类型用于存储文档的ID。
Binary data | 此数据类型用于存储二进制数据。
Code | 此数据类型用于存储到文档中的JavaScript代码。
Regular expression | 此数据类型用于存储正则表达式

MongoDB的基本命令

use命令

MongoDB use DATABASE_NAME 用于创建数据库。该命令将创建一个新的数据库,如果它不存在,否则将返回现有的数据库。

show dbs //查看数据库
user test //使用数据库,没有会自动创建

dropDatabase() 方法

MongoDB db.dropDatabase() 命令是用来删除一个现有的数据库。
dropDatabase() 命令的基本语法如下:

db.dropDatabase()

drop() 方法

MongoDB db.collection.drop() 是用来从数据库中删除一个集合。

insert() 方法

要插入数据到 MongoDB 集合,需要使用MongoDBinsert()save() 方法。

db.test_collection.insert({name:'hu',age:22})

find() 方法

要从MongoDB 查询集合数据,需要使用MongoDBfind() 方法。

> db.test_collection.find()

{ "_id" : ObjectId("57e73cc5507aa7b3041a2a71"), "name" : "hu", "age" : 22 }
{ "_id" : ObjectId("57e74454507aa7b3041a2a72"), "name" : "张三", "age" : 22 }
{ "_id" : ObjectId("57e74463507aa7b3041a2a73"), "name" : "李四", "age" : 22 }

还可以根据条件查询

db.test_collection.find({name:'hu'})

update()方法

使用update()更新数据,接受两个参数,一个为要更新的数据,后一个为更新的数据

db.test_collection.update({name:'hu'},{name:'hu', age:100})

如果这样 db.test_collection.update({name:'hu'},{age:100}),则会覆盖掉原来的数据,变成这样:
{ "_id" : ObjectId("57e73cc5507aa7b3041a2a71"), "age" : 22 }
所以更新部分数据,使用set:
db.test_collection.update({name:'hu'},{$set:{age:100}})

当update不存在的数据时,可以将第三个参数设置为true,会自动插入数据
db.test_collection.update({name:'王小二'},{name:'王小二', age:100},true)

默认情况下mongodb只会更新满足条件的第一条数据,如果想更新满足条件的所以数据,可以将第四个参数设置为true

remove()方法

使用remove()删除数据,为了安全,remove()必须传递参数

db.test_collection.remove({name:'hu'})

Limit() 方法

要限制 MongoDB 中的记录,需要使用 limit() 方法。 limit() 方法接受一个数字型的参数,这是要显示的文档数。
语法:

db.COLLECTION_NAME.find().limit(NUMBER)

limit()skip()结合使用

db.test_collection.find().skip(3).limit(3).sort({age:1}) //表示跳过前面3条数据,查找3条数据,并以`age`升序排列

下一章讲解mongoDB索引的相关知识,最后我会以node.js+mongodb+pug模板引擎搭建个人博客系统为主题,来展示mongoDB的实际应用,敬请期待:)

    原文作者:huluobobo
    原文地址: https://www.jianshu.com/p/8b6161866154
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞