mongodb在node中的基本使用

本文介绍了MongoDB的基础知识,包括其作为NoSQL数据库的特点、安装步骤及基本使用方法,如创建数据库、集合、插入、查询、删除文档等。此外,还详细讲解了如何在Node.js环境中使用mongoose库连接MongoDB,创建Schema和Model进行CRUD操作。
摘要由CSDN通过智能技术生成

MongoDB

1.1简介

Mongodb是一个介于关系数据库和非关系数据库之间的产品(Nosql),是非关系数据库当中功能最丰富,最像关系数据库的,语法有点类似javascript面向对象的查询语言,它是一个面向集合的,模式自由的文档型数据库。Mongodb数据库旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。数据库=>集合=>文档在这里插入图片描述

1.2安装软件

//下载地址:https://www.mongodb.com/download-center/community

//mac
//mac安装:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x-tarball/
//压缩包  https://fastdl.mongodb.org/osx/mongodb-macos-x86_64-4.4.6.tgz
tar -zxvf mongodb-macos-x86_64-4.4.tgz
mv /xxx/mongodb-macos-x86_64-4.4 /usr/local/mongodb
// 创建数据目录
mkdir -p /usr/local/mongodb/data
mkdir -p /usr/local/ /mongodb/logs
// 启动
mongod --dbpath /usr/local/mongodb/data --logpath /usr/local/mongodb/logs/mongo.log --fork

1.3数据库基本使用

mongo命令进入客户端

show dbs  查看数据库
show tables/show collections 查看集合(查看当前库里面的表)
db 查看当前数据库
use 数据库  切换或创建数据库   如果数据库存在则切换,不存在则先创建后切换

// 添加一个集合对象并向此集合中添加文档
// 集合名有则添加文档,集合不存在时先帮创建集合后创建文件
db.集合名.insert(json对象);
db.c1.insert({name:'user1'});
//查看集合
db.c1.find()
{ "_id" : ObjectId("5c0fa4758878caa23d36c0fb"), "name" : "zhangsan" }

//objectID类型
//ObjectId对象对象数据组成:时间戳 |机器码|PID|计数器   系统自动生成
//_id的键值我们可以自己输入,但是不能重复


// 删除当前的数据库
 db.dropDatabase();
 //删除集合 
 db.集合名.drop();

show dbs //显示数据库列表
use 数据库名称  //切换到哪个数据库

show tables  //查看数据库中的集合列表
show collections //查看数据库中的集合列表

//添加单条文档数据
db.collection.insertOne({ key: value })
// 添加多条文档数据
db.collection.insertMany([{}, {}, {}])
//可以添加单条也可以多条数据
db.collection.insert( {} )
db.collection.insert([{}, {} ])


// 删除单条文档
db.collection.deleteOne({ key: value })
// 删除符合条件多条文档
db.collection.deleteMany({key: value})
// 删除全部数据
collection.deleteMany({});
//key:value   表示 等于的 意思


db.c1.find();    // 获取全部
db.c1.find({});  // 获取全部
// 条件   
//查询指定的字段
db.集合.find({条件},{字段名:[0/1]}) 0不要字段显示, 1要记录显示
//字段值为1取出相对应字段数据 0就表示不取出 _id默认会显示,只有指定为0才不会显示
db.c1.find({name:"user11"},{name:1})
// 条件表达式
// 年龄大于5的
db.c1.find({age:{$gt:5}});  age > 5
//年龄大于等于5的
db.c1.find({age:{$gte:5}}); age >= 5
//年龄小于5的
db.c1.find({age:{$lt:5}}); age < 5
//年龄小于等于5的
db.c1.find({age:{$lte:5}}); age <= 5
// 年龄不等于5的
db.c1.find({age:{$ne:5}}); age != 5
// 在一个指定的数值中查询  $in    年龄在不在这几个指定数值当中
db.c1.find({age:{$in:[1,2,3]})

// 且关系  and
db.集合.find({age:{$lt:5},name:"user11"})

// 或关系 or
db.集合.find({$or:[{条件1},{条件2}]})
db.c1.find({$or:[{age:{$ne:5}},{name: "user11"}]});

//正则
db.集合.find({字段名:/正则/i})
i 不区分大小写
u 支持中文

// 统计记录数量 count
db.c1.count();
db.c1.find().count();

// 排序
// 1 升序   -1 降序     字段
// 以age字段来升序
db.c1.find().sort({age:1})
// 以age字段来降序
db.c1.find().sort({age:-1})


// 指定获取几条  skip/limit   分页
db.c1.find().limit(3);
db.c1.find().skip(1).limit(3);

// 设置
// 只修改单条文档
db.collection.updateOne({key:value}, { $set: { key: value }})
// 修改符合条件所有文档数据
db.collection.updateMany({key:value}, { $set: { key: value }})
// 字段的值的自增和自减
db.collection.updateOne({key:value}, { $inc: { key: 1 }})
db.collection.updateMany({key:value}, { $inc: { key: 1 }})

2.1 Node操作MongoDB

// 安装mongoose
npm i -S mongoose
//导入模块
const mongoose = require('mongoose')
//连接数据库 返回promise对象
mongoose.connect('mongodb://localhost:27017/mydb', { useNewUrlParser: true, useUnifiedTopology: true })
connect方法参2在新版本需添加,否则会有警告提示
useNewUrlParser:当前URL字符串分析器已弃用,将在将来的版本中删除。要使用新的解析器,请将选项{usenewurlparser:true}传递给mongoclient.connect。
useUnifiedTopology:当前服务器发现和监视引擎已弃用,将在将来的版本中删除。要使用新的服务器发现和监视引擎,请将选项{useUnifiedTopology:true}传递给mongoclient构造函数

2.2 schema

// 创建用户集合规则
const UserSchema = new mongoose.Schema({
  // 字段名/域名称
  name: {
	// 指字域类型
type: String,
// 必填字段
required: true,
// 字段最小长度  minlength 用于字符串类型
    minlength: 2
  },
  age: {
type: Number,
// 默认值
	default:10,
	// 字段最小值 min用于数字类型
    min: 1
  },
  pwd: String,
  email: String,
  // 定义此字段为 字符串数组类型
  hobbies: [String]
})

2.3 Model

// 参数1:model名称
// 参数2:schema名称
// 参数3:操作的数据集合   如果参数3没有填写则以 参1的复数形式为操作数据集合名称
const UserModel = mongoose.model('User', UserSchema, 'users')

## 模型curd相关方法
Model.insertMany({key:value})
Model.deleteMany({条件},err=>{})
Model.deleteOne({条件},err=>{})
Model.countDocuments({条件})
Model.find({条件},{可选字段返回:0/1},{skip:0,limit:10})
Model.findOne({条件},{可选字段返回:0/1})
Model.updateMany({条件},{$set:{key:value}},res=>{})
Model.updateOne({条件},{$set:{key:value}},res=>{})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值