MongoDB基本介绍

  1. 简单介绍
    MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展高性能数据存储解决方案
    MongoDB是一个介于关系数据库和非关系数据库之间产品,是非关系数据库当中功能最丰富,最像关系数据库的。
    支持数据结构非常松散,是类似jsonbson格式,因此可以存储比较复杂数据类型
    Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引
  2. 业务应用场景
    MongoDB可应对“三高“需求
    High performance:对数据库并发读写需求
    Huge Storage:对海量数据的高效率存储和访问需求
    High Scalability && High Availability:对数据库的高可扩展性高可用性需求
  3. 什么时候选择MongoDB
    应用需要事务复杂join支持
    应用需求会变,数据模型无法确定,想快速迭代开发
    应用需要2000-3000以上的读写QPS(更高也可以)
    应用需要TB甚至PB级别数据存储
    应用要求存储的数据丢失
    应用需要99.999%高可用
    应用需要大量的地理位置查询文本
  4. 体系机构
    在这里插入图片描述
  5. 数据类型
    MongoDB的最小存储单位就是文档document对象文档document对象对应关系数据库的行。数据在MongoDB中以BSON(Binary-JSON)文档格式存储在磁盘上。

BSON(Binary Serialized Document Format)是一种类json的一种二进制形式的存储格式,简称 Binary JSON;BSON和JSON一样,支持内嵌文档对象数组对象,但是BSON有JSON没有的一些数据类型,如Date和Bin Data类型
BSON中,除了基本JSON类型stringintegerbooleandoublenullarrayobjectmongo使用特殊的数据类型。这些类型包括 dateobject idbinary dataregular expressioncode。每一个驱动都以特定语言方式实现了这些类型查看你的驱动的文档获取详细信息
在这里插入图片描述

MongoDB基本操作

数据库相关

1、查看数据库

show databases;

2、创建切换数据库

use 数据库

选择数据库(如果数据库不存在,不会报错;会隐式创建:当后期该数据库有数据时自动创建)

3、删除数据库(先选中数据库)

db.dropDatabase()

集合相关

1、查看所有集合

show collections

2、创建集合(插入数据会隐式创建)

db.createCollection('集合名')

3、删除集合

db.集合.drop()

增删改查

db.集合.insert(JSON数据)
use test2 db.c1.insert({uname:"webopenfather",age:18}) ----test2数据库的c1集合中插入数据(姓名叫webopenfather年龄18岁)

mongodb会给每条数据增加一个全球唯一_id
在这里插入图片描述
一次插入条数

db.c1.insert([     {uname:"z3", age:3},     {uname:"z4", age:4},     {uname:"w5", age:5} ])

快速插入10条数
由于mongodb底层使用JS引擎实现的,所以支持部分js语法。因此:可以写for循环

for (var i=1; i<=10; i++) {     db.c2.insert({uanme: "a"+i, age: i}) }
  1. 删除文档
db.集合名.remove(条件[,是否删除一条]) ---默认false

是否删除一条
true:是(删除的数据为第一条

db.c3.remove({uname:"zs3"},true) ---删除uname:"zs3"的第一条
db.c3.remove({uname:"zs3"}) --删除uname:"zs3"所有
  1. 修改文档
db.集合名.update(条件,新数据[是否新增,是否修改多条,])

新数据是否需要使用修改器,如果不使用,那么会将新数据替换原来的数据。

1db.集合名.update(条件,{修改器:{键:值}}[是否新增,是否修改多条,])

修改器 作用
$inc 递增
$rename 重命名
$set 修改列值
$unset 删除列

是否新增
条件匹配不到数据则插入(true是插入,false否不插入默认)

是否修改多条
指将匹配成功的数据都修改(true是,false默认

db.c3.update({uname:"zs1"},{$set:{uname:"zs2"}}) ----查找不到,不做修改
db.c3.update({uname:"zs1"},{$set:{uname:"zs2"}},true)  ----查找不到,则插入
db.c3.update({uname:"zs10"},{$inc:{age:2}}) ---{uname:"zs10"}年龄加2岁
----修改gccusernamebarethage+11,sex字段重命名sexuality,删除address字段
db.people.update({username:"gcc"},{
	$set:{username:"bareth"},
	$inc:{age:11},
	$rename:{sex:"sexuality"},
	$unset:{address:true}
})

  1. 查询文档
db.集合名.find(条件[,查询的列])

在这里插入图片描述
其他语法

db.集合名.find({
            键:{运算符:值}
            })

在这里插入图片描述

----查询所有数据
db.c1.find()
---只看uname列
db.c1.find({},{uname:1})
---除了uname列都看
db.c1.find({},{uname:0})
-----查询age大于5的数据
db.c1.find({age:{$gt:5}})
----查询年龄是5岁、8岁、10岁的数据
db.c2.find({age:{$in:[5,8,10]}})
----查询年龄不是null的数据
db.c2.find({ age: { $ne: null } })
----查询年龄一定存在且不是null的数据
db.c2.find({ age: { $exists: true, $ne: null } })
1:主键为32的商品
db.goods.find({goods_id:32});
 
2:不属第3栏目所有商品($ne)
db.goods.find({cat_id:{$ne:3}},{goods_id:1,cat_id:1,goods_name:1});
 
3:本店价格高于3000元的商品{$gt}
db.goods.find({shop_price:{$gt:3000}},{goods_name:1,shop_price:1});
 
4:本店价格低于或等于100元的商品($lte)
db.goods.find({shop_price:{$lte:100}},{goods_name:1,shop_price:1});
 
5:取出第4栏目或第11栏目商品($in)
db.goods.find({cat_id:{$in:[4,11]}},{goods_name:1,shop_price:1});
 
6:取出100<=价格<=500的商品($and)
db.goods.find({$and:[{price:{$gt:100},{$price:{$lt:500}}}]);
 
7:取出属于第3栏目且不属于第11栏目的商品($and $nin$nor分别实现)
db.goods.find({$and:[{cat_id:{$ne:3}},{cat_id:{$ne:11}}]},{goods_name:1,cat_id:1})
db.goods.find({cat_id:{$nin:[3,11]}},{goods_name:1,cat_id:1});
db.goods.find({$nor:[{cat_id:3},{cat_id:11}]},{goods_name:1,cat_id:1});
 
8:取出价格大于100且小于300,或者大于4000且小于5000的商品()
db.goods.find({$or:[{$and:[{shop_price:{$gt:100}},{shop_price:{$lt:300}}]},{$and:[{shop_price:{$gt:4000}},{shop_price:{$lt:5000}}]}]},{goods_name:1,shop_price:1});
 
9:取出goods_id%5 == 1,,1,6,11,..这样的商品
db.goods.find({goods_id:{$mod:[5,1]}});
 
10:取出有age属性的文档
db.stu.find({age:{$exists:1}});
# 含有age属性的文档将会被查出

原文地址:https://blog.csdn.net/weixin_43597208/article/details/134823681

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_50118.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注