MongoDB数据库的基本入门


一、MongoDB简介

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

二、MongoDB下载和安装

数据库下载:

下载地址:https://www.mongodb.com/download-center/community
注:mongodb的版本偶数版本为稳定版本,奇数版本为开发版本,在3.2版本后不再对32位系统支持。

数据库安装:

MongoDB的安装跟普通软件的安装方式一样,不过注意安装路径,默认安装C盘,安装完成后配置环境变量(方法省略)。配置完成后打开CMD窗口,输入mongod命令启动MongoDB数据库服务器(默认情况下MongoDB数据库已经设置了开机自动启动)。然后再打开一个CMD窗口,输入mongo命令连接数据库。

手动设置数据库路径和端口(默认端口:27017):

mongod --dbpath 数据库路径 --port 端口号

注:端口号尽量再4位数以上,防止与其他程序的端口重合,且端口号最大不能超过65535.

三、数据库的基本操作

  • 显示当前所有数据库
    show dbs 或show databases
  • 进入指定的数据库
    use 数据库名字
  • 显示当前所处的数据库
    db
  • 查看数据库中所有的集合
    show collections

注:在mongodb中,数据库和集合不需要手动创建,当创建文档时,文档所在的集合或数据库不存在时会自动创建。

四、数据库的增删改查操作

插入操作

  • 向集合插入一个或多个文档
	db.collection.insert(doc)

当doc为一个文档时,doc以json的格式插入集合,如果是多个文档时,以数组的形式插入集合。

  • 向集合插入一个文档
	db.collection.insertOne(doc)
  • 向集合插入多个文档
	db.collection.insertMany(doc)

注:collection为需要插入文档的集合。
当向集合中插入文档时,如果没有指定id,则数据库会自动为文档创建一个_id,作为该文档的唯一标识。默认情况下,_id根据时间戳和机器码生成。

查询操作

  • 查询集合中所有的文档
	db.collection.find() 或 db.collection.find({})

该方法返回的是一个数组,可以通过数组下标索引获取某个具体的值。

  • 查询集合中符合条件的文档
	db.collection.find(condition) 

codition为查询条件,以json的形式展现。

  • 查询符合条件的第一个文档
	db.collection.findOne(condition) 

返回的结果是一个对象。

  • 查询所有结果的数量
	db.collection.find(condition) .count()

修改操作

  • 修改第一个符合条件的文档
	db.collection.updateOne({condition},{new object})
  • 修改所有符合条件的文档
	db.collection.updateMany({condition},{new object})
  • 替换某一个文档
	db.collection.updateMany({condition},{new object})
  • 原始修改文档
	db.collection.update({condition},{new object})

condition:条件;new object:新的对象
使用该方法时,默认情况下使用新对象替换旧对象,需要使用$ set或$ unset等操作符进行处理。如果使用update方法代替updateMany方法,需要添加上第三个参数,将multi的值设置为true。
例子:

db.stus.update({name:"沙和尚"},{$set:{age:"28"}},{multi:true})
db.stus.update({name:"沙和尚"},{$unset:{age:0}})
db.stus.updateMany({name:"猪八戒"},{$set:{age:"38"}})
db.stus.updateOne({name:"猪八戒"},{$set:{age:"48"}})

删除操作

  • 删除第一个符合条件的文档
	db.collection.deleteOne(condition) 
  • 删除多个符合条件的文档
	db.collection.deleteMany(condition) 
  • 删除一个或多个符合条件的文档
	db.collection.delete(condition) 

注:使用该方法删除数据时,默认删除多个,如果想删除一个数据,增加第二个参数,将第二个参数的值设置为true;

  • 删除集合
	db.collection.drop() 
  • 删除数据库
	db.dropDatabase()

注:尽量不要使用删除操作。当一个数据库只有一个集合,一个集合只有一个数据时,如果将该数据删除,那么数据库和集合也会一同被删除。

五、其他常用的方法

  • limit(number)
    该方法用于分页查询,number为查询的数据的个数。
    例子:查询10条数据
	db.numbers.find().limit(10);
  • skip(number)
    该方法用于将数据分割,一般配合limit方法实现分页查询,number为分割的位置。
    例子:查询第11条数据到第20条数据
	db.numbers.find().skip(10).limit(10);

s

  • sort(condition)
    该方法用于对查询的结果进行排序。
    condition为排序的条件,是一个对象,如{number:-1},number为根据number这个属性进行排序,-1为降序排序,1为升序排序。
    例子:根据number列进行降序排序。
	db.test.find().sort({number:-1});
  • 投影
    find方法默认的查询结果是显示全部数据,可以通过设置find函数的第二个参数来进行投影。
    例子:
db.test.find({},{number:1,_id:0})

如该例子所示,显示number列,隐藏_id列。后面的值为是否显示,1为显示,0为不显示。
注:_id列默认是显示的。

六、$操作符表达式

操作符释义
$eq匹配等于(=)指定值的文档
$gt匹配大于(>)指定值的文档
$gte匹配大于(>)指定值的文档
$lt匹配小于(<)指定值的文档
$lte匹配小于等于(<=)指定值的文档
$ne匹配不等于(≠)指定值的文档
$in匹配数组中的任一值
$nin不匹配数组中的值
$or或 条件查询
$and与 条件查询
$not查询与表达式不匹配的文档
$nor查询与任一表达式都不匹配的文档
$exists查询存在指定字段的文档
$type查询类型为指定类型的文档
$mod取余条件查询
$regex正则表达式查询
$text文本索引查询
$all匹配文档的数组字段中包含所有指定元素的文档
$elemMatch(query)匹配内嵌文档或数组中的部分field
$size匹配数组长度为指定大小的文档
$inc将文档中的某个field对应的value自增/减某个数字amount
$mul将文档中的某个field对于的value做乘法操作
$rename重命名文档中的指定字段的名
$setOnInsert配合upsert操作,在作为insert时可以为新文档扩展更多的field
$set更新文档中的某一个字段,而不是全部替换
$unset删除文档中的指定字段,若字段不存在则不操作
$min将文档中的某字段与指定值作比较,如果原值小于指定值,则不更新;若大于指定值,则更新
$max与$min功能相反
$currentDate设置指定字段为当前时间
$addToSet用于添加一个元素到array中,一般用于update
$pop删除数组中的第一个或最后一个元素,-1表示第一个,没错,第一个;1表示最后一个!
$pullAll删除数组或内嵌文档字段中所有指定的元素
$pull删除满足条件的元素
$push往数组中追加指定的元素,若文档中数组不存在,则创建并添加指定元素,自v2.4起,添加了对$.each的支持
$each需要搭配 addToSet或addToSet或push方可使用
$sort配合$push使用,表示给文档中的指定数组元素排序,1是升序,-1是降序
$position配合$push使用表示往数组元素中的指定位置插入元素

七、总结

个人总结的内容可能不全,可以去官网查看相关的文档。
MongoDB官网:https://www.mongodb.com/

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值