文章目录

  • 概念
  • 特点(字段和值)
  • 数据库
  • 数据模型
  • 可视化工具
  • CURD


概念

  1. 是一个基于分布式文件存储的数据库,有c++语言组成。目的是为了web应用提供可扩展的高性能数据库存储解决方案
  2. 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的
  3. 数据结构类似于json的bson格式,具有强大的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。数据存储事有序的。

特点(字段和值)

spring mongodb 多集合关联查询 mongodb查询多个集合_数据库


文档中的值可以是双引号中的字符串[[,整型、布尔型等,也可以是另外一个文档,即文档可以嵌套。文档中的键类型只能是字符串。

数据库

MongoDB 中多个文档组成集合,多个集合组成数据库。

集合就是一组文档,类似于关系数据库中的表。对于一个博客系统,可能包括blog.user和blog.article两个子集合,这样划分只是让组织结构更好一些,blog集合和blog.user、blog.article没有任何关系。虽然子集合没有任何特殊的地方,但是使用子集合组织数据结构清晰,这也是MongoDB推荐的方法。
MongoDB中存在以下系统数据库:

  1. Admin 数据库:一个权限数据库,如果创建用户的时候将该用户添加到admin 数据库中,那么该用户就自动继承了所有数据库的权限。
  2. Local 数据库:这个数据库永远不会被复制,可以用来存储本地单台服务器的任意集合。
  3. Config 数据库:当MongoDB 使用分片模式时,config数据库在内部使用,用于保存分片的信息。

数据模型

一个MongoDB实例可以包含一组数据库,一个DataBase可以包含一组Collection(集合),一个集合可以包含一组Document(文档)。一个Document包含一组field(字段),每一个字段都是一个key/value pair

  1. key: 必须为字符串类型
  2. value:可以包含如下类型
  • 基本类型,例如,string,int,float,timestamp,binary 等类型
  • 一个document
  • 数组类型

可视化工具

  1. Navicat 16: 更推荐这个,这个up的教程很详细,破解的。
  2. MongoDB-Compass:安装一直next就行

    进去之后就是这样,改一下url和host就行了。
  3. Goland 编译器:和mysql一样的配置

CURD

库操作:

  1. 查看数据库
show databases; ---------》简写  show dbs
  1. 选择数据库 -----如果选择一个不存在的会自动创建
use  表名
  1. 删除数据库
use   数据库
 db.dropDataBase()

集合操作:

  1. 查看集合
show collections
  1. 创建集合
db.createCollection('集合名')
  1. 删除集合
db.集合名.drop()

集合操作:

  1. 增-----如果集合不存在,那么会隐式创建。
db.集合名.insert(JSON数据)

示例:在test2数据库的c1集合中插入数据(姓名叫webopenfather年龄18岁)

use test2 db.c1.insert({uname:"webopenfather",age:18})
  • 对象的键统一不加引号(方便看),但是查看集合数据时系统会自动加
  • mongodb会给每条数据增加一个全球唯一的_id键
  1. 多条插入
1. db.c1.insert([{uname:"z3", age:3},{uname:"z4", age:4}, {uname:"w5", age:5} ])
	2. for (var i=1; i<=10; i++) {db.c2.insert({uanme: "a"+i, age: i})}
db.集合名.remove(条件[,是否删除一条])
db.集合名.update(条件,{修改器:{键:值}}[是否新增,是否修改多条,])
 举例:
     条件: {uname:"王zq"}
   	修改器:{$set:{age:21}}
   	是否新增:指条件匹配不到数据则插入(true是插入,false否不插入默认)
     否修改多条:指将匹配成功的数据都修改(true是,false否默认)
db.集合名.find(条件 [,查询的列])
 如果只查一个,或者只有一个结果,要不然会默认全表查
 db.sang_collect.find({x:1}).limit(1)