Mongodb数据库快速开发lemooljiang (76)in #starnote • 26 days ago (edited) MongoDB 是一个开源的文档型 NoSQL 数据库,用 C++ 编写,2009 年发布。与关系数据库不同, MongoDB允许开发者存储丰富的类似JSON的文档,这些文档自然映射到他们在代码中使用的对象。多应用在内容管理系统、博客文章存储、用户画像、商品目录、日志、物联网数据、实时分析和大数据处理等场景。 -> 前往星空笔记 #cn #cn-reader #mongodb #data #agent
mongodb |
文档 |
mongosh |
mongoose |
mongoose中文版 |
数据库设计参考 |
菜鸟教程 |
mongodb中文网 |
PyMongo |
PyMongo文档 |
w3school |
菜鸟教程 |
用户权限管理 |
版本 |
安装 |
mongosh版本 |
mongosh文档 |
系统:Ubuntu 24.04.4 LTS (GNU/Linux 6.8.0-111-generic x86_64)
安装版本:mongodb-org-server_9.0.2
mongodb-mongosh_2.13.0
// Ubuntu 24.04.4 LTS (GNU/Linux 6.8.0-111-generic x86_64) apt update wget https://repo.mongodb.org/apt/ubuntu/dists/noble/mongodb-org/9.0/multiverse/binary-amd64/mongodb-org-server_9.0.2_amd64.deb dpkg -i ./mongodb-org-server_9.0.2_amd64.deb //客户端 mongosh wget https://downloads.mongodb.com/compass/mongodb-mongosh_2.13.0_amd64.deb dpkg -i ./mongodb-mongosh_2.13.0_amd64.deb //查看安装 ls -l /usr/bin | grep mongod ls -l /usr/bin | grep mongosh1、安装好后添加环境变量 2、在默认的C盘下创建数据目录 c:/data/db 3、启动 cd C:\Program Files\MongoDB\Server\4.0\bin mongod //在默认的C盘下创建数据目录 c:/data/db //使用另外的存储路径 mongod.exe --dbpath D:\MongoDB\Server\4.0\data 4、mongo 连接即可 exit退出 5、基本命令 show dbs //查看所有数据库 db //当前数据库 use dbname //切换指定数据库(没有则新建) //直接可以放集合students(当前没有students则新建)中插入数据 db.students.insertOne({"name":"lemool"}) show collections //查看集合 db.students.find() //查看集合中的所有数据快速拉起数据库的服务,一般用于开发和测试,开发环境用systemctl来启动运行。
开发环境用systemctl来启动运行。
systemctl start mongod systemctl stop mongod systemctl restart mongod systemctl status mongod //查看状态 ps -ef | grep mongomongosh //切换数据库 use test //创建集合 db.createCollection(name, options), eg: db.createCollection("info") //显示集合 show collections //删除集合 db.collection.drop(), eg: db.info.drop() //删除当前数据库 db.dropDatabase() //插入记录 insertOne insertMany db.COLLECTION_NAME.insertOne(document) eg: >db.info.insertOne({title: 'MongoDB 教程44', description: 'MongoDB 是一个 Nosql 数据库5', by: '菜鸟教程', url: 'http://www.runoob.com', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 }) //查找记录 db.info.find().pretty()MongoDB非常灵活,不需要像MySQL一样创建数据库、表、设计表结构。它只需要向指定的数据库集合插入即可。
MongoDB可以有多个数据库,一个数据库可以有多个集合(表),一个集合可以有多个文档(表记录),可以有相同的表结构,也可以不同。
mongoose |
英文手册 |
Mongoose 是一个为 Node.js 提供 MongoDB 的对象数据建模(ODM)库。它通过为 MongoDB 提供 schema 和模型的支持,使得开发人员能够以更加结构化和简洁的方式与数据库进行交互。
npm install mongoose --save //"mongoose": "^7.0.3" ^9.9.4 import mongoose from 'mongoose' mongoose.connect('mongodb://localhost:27017/test') mongoose.connect('mongodb://admin:[email protected]:27017/test?authSource=admin') //开启了权限,用户名和密码 .then(() => console.log('Connected!')) .catch(error => console.log(44, error)) //其它的监听形式 mongoose.connection.on('connected', res => { console.log(123, res) }) mongoose.connection.on('error', err => { logError(err) })数据模型设计 |
设计方法及技巧 |
从数据集合的设计开始 |
把数据放在一张表中,嵌套使用
使用情景:不需要频繁更新的数据,同时读取速度快。比如:我们博客的博文,作者一旦保存之后,几乎就不在进行频繁的修改。
分多张表。引用模式类似于外键,一般用某个字段作为引用关联另一个表。
使用情景: 频繁的写入操作,读取稍慢,因为它要读取多张表。比如:需要频繁修改数据的业务类系统。
文档 |
const userSchema = new Schema({ email: { type: String, required: true, unique: true }, registeredAt: { type: Date, index: true } }); // [ [ { email: 1 }, { unique: true, background: true } ], // [ { registeredAt: 1 }, { background: true } ] ] // userSchema.indexes();