MongoDB基础操作


前言

MongoDB:面向文档NoSQL

一、MongoDB是什么?

1.C++ 语言编写
2.面向文档的NoSQL数据库
3.MongoDB是一个介于关系数据库和非关系数据库之间的产品
4.开源软件
5.无表结构
(MongoDB可由四个部分了解)

1.文档

文档是MongoDB的核心概念。多个键及其关联的值有序地放置在一起便是文档。文档是一个键值(key-value)对。
MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别。

2.集合

集合就是一组文档。集合就是MongoDB文档组,类似于RDBMS(关系数据库管理系统:Relational Database Management System)中的表格。
集合存在于数据库中,集合没有固定的结构,也就是说集合是无模式的。

3.数据库

在MongoDB中,一组集合可以组成一个数据库。一个MongoDB实例可以承载多个数据库。每个数据库都有独立的权限控制。

4.数据类型

MongoDB中的文档本质上是一种类似JSON的BSON格式的数据。BSON是一种类似JSON的二进制格式数据,它可以理解为在JSON基础上添加了一些新的数据类型。

二、MongoDB基本操作

1.创建,插入,删除

-- 创建数据库
use wsq
-- 创建表wsq1
db.createCollection("wsq1")
-- 查看数据库下表
show collections
-- 删除表wsq1
db.wsq1.drop()
-- 想创建的文档插入数据(id,name,sex,age,province,english,math,tool插入内容可自己更改)
db.wsq1.insert({id:"1",name:"wsq",sex:"male",age:20,province:"cq",english:"50",math:"100",tool:["car"]})
-- 批量插入数据
x=[{id:"1",name:"wsq",sex:"male",age:20,province:"cq",english:"50",math:"100",tool:["car"]},
{id:"2",name:"wsq1",sex:"male",age:20,province:"cq",english:"50",math:"100",tool:["car"]}]
db.wsq1.insert(x)
-- 删除文档
db.wsq1.deleteOne({})删除一条文档(大括号里可以输入想删除相关文档的内容,例如{name:"wsq"})
db.wsq1.deleteMany({})删除所有文档

2.文档更新

db.collection.update(criteria,objNew,upsert,multi)
criteria:查询条件,类似sql update查询内where后面的。
objNew:update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
upsert:如果不存在update的记录,是否插入objNew这个新的文档,true为插入,默认为false,不插入。
multi:默认是false,只更新找到的第一条记录。如果为true,把按条件查询出来的记录全部更新。
例如:
-- 更新文档wsq1中一条name数据
db.wsq1.update({name:"wsq"},{$set:{name:"abc"}})
-- 同样$set可以修改数据(把english:"50"改为数组english:["90","100"])
db.wsq1.update({name:"wsq"},{$set:{english:["90","100"]}})
-- $inc增加和减少,只针对于数字类型(年龄增加一岁)
db.wsq1.update({name:"wsq"},{$inc:{age:1}})
-- 数组追加元素(在tool当中加一条"air")
db.wsq1.update({name:"wsq"},{$push:{tool:"air"}})
-- 更新多个文档(将所有文档name数据更改为"abc")
db.wsq1.update({name:"wsq"},{$set:{name:"abc"},false,ture})

3.数据查询

-- 查询所有数据
db.wsq1.find()
-- 查询指定数据(name:"wsq")
db.wsq1.find({name:"wsq"})
-- 指定返回键(查询文档中所有name数据)
db.wsq1.find({},{_id:0,name:1}) (如果不输入_id:0则会显示出_id的信息不方便我们查看)

比较查询($lte:小于(<),$lte :小于等于(<=),$gt :大于(>),$gte :大于等于(>=),$ne :不等于(≠)。)
-- 查询年龄大于15岁小于18岁的数据 
db.wsq1.find({age:{"$gt":15,"$lte":18}})
-- 查询省份是cq或hb的数据
db.wsq1.find({province:{$in:["cq","hb"]}})
-- 查询省份不是cq或hb的数据
db.wsq1.find({province:{$nin:["cq","hb"]}})
-- 查询年龄大于等于20或者省份是cq的数据
db.wsq1.find({$or:[{age:{"$gte":20}},{province:"cq"}]})

“$not”是元条件句,即可以用在其他条件之上(正则和文档)。$not和$nin的区别是$not可以用在任何地方$nin只能用到集合上。
-- 查询name不存在adc的数据
db.wsq1.find({name:{$not:/abc/}})

使用null查询不仅仅匹配自身,而且还会匹配“不存在”。所以,这种匹配还会返回缺少这个键的文档
-- 查询缺少age的文档
db.wsq1.find({age:null})

使用“$all”对数组内元素的顺序没有要求,只要全部包含的数组都能查询出来。
-- 查询出tool包含"air","train"
db.wsq1.find({tool:{$all:["air","train"]}})

“$size”语法在查询语句中可以指定其查询数组的大小
-- 查询文档中tool数组为2的数据
db.wsq1.find({tool:{"$size":2}})

总结

此文章都为一些基础的操作,能够熟练的运用代码需要私下不断的练习,并且通过字符类型,数组这类的关系结合理解,这样才能熟练同时快速的掌握知识。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值