node 连接MongoDB
2020-03-05 19:43
871 查看
MongoDB
概念:
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
在高负载的情况下,添加更多的节点,可以保证服务器性能。
MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
SQL概念 | MongoDB概念 | 解释 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表/集合 |
row | document | 数据行/文档 |
column | field | 数据字段/域 |
index | index | 索引 |
table joins | 表连接,MongoDB不支持 | |
primary key | primary key | 主键,MongoDB自动将_id字段设置为主键 |
node连接MongoDB
采用的是Express框架,因此决定使用mongoose来连接MongoDB。
var mongoose=require('mongoose'); mongoose.connect('mongodb://localhost:27017/db'); mongoose.connection.on("connected",()=>{ console.log("MongoDB connected success") }); mongoose.connection.on("error",()=>{ console.log("MongoDB connected fail") }); mongoose.connection.on("disconnected",()=>{ console.log("MongoDB connected disconnected") });
mongoose实际上,可以说是Oracle和mongodb的一个混合产物,但归根接地还是mongodb的。
Oracle | MongoDB | mongoose |
---|---|---|
数据库实例 | MongoDB实例 | Mongoose |
模式(Schema) | 数据库(database) | monogoose |
table | collection | schema+model |
row | document | 实例(instance) |
rowid | _id | _id |
Join | DBRef | DBRef |
mongoose概念:
- Schema: mongoose里会用到的一种数据模式,可以理解为表结构的定义;每个schema会映射到mongodb中的一个collection,它不具备操作数据库的能力
- Model: 是由schema生成的模型,通过集成Schema定义的基本方法和属性得到相关的内容,可以对数据库进行操作
- instance: 这就是实实在在的数据了.
通过 new Model()初始化得到.
let userSchema=mongoose.Schema({ name:String, age:Number }) Schema.methods.sayHi=()=>{ console.log('hi') } let User=mongoose.model('User',userSchema) let user=new User({ name:'小明', age:20 }) user.save((err,user)=>{ //保存数据 if(err){ console.log(err) }else{ data.sayHi(); } })
mongoDB不需要提前创建一个collection,在提交save时会自动创建对应的collection,比如上面的名为User的shema,在保存数据的时候会创建一个Users的collection,对,会自动添加一个s。
增删改查操作
增加操作就是上面的save以及create
let params={ name:'小红', age:20 } User.create(params,(err,data)=>{})
删除:deleteOne,remove(该方法将被移除,不推荐使用),
let condition={ name:'小红' } User.deleteOne(condition,(err,data)=>{})
查询:
let condition={ name:'小明' } User.findOne(condition,(err,data)=>{}) //查找一条 User.find(condition,(err,data)=>{}) //多条 findById与findOne相同,但它只接收文档的_id作为参数,返回单个文档 User.findById('_id',(err,data)=>{}) 条件查询: "$lt"(小于),"$lte"(小于等于),"$gt"(大于),"$gte"(大于等于),"$ne"(不等于),"$in"(可单值和多个值的匹配),"$or"(查询多个键值的任意给定值),"$exists"(表示是否存在的意思)"$all". User.find({age: {"$gte": 18}},(err,data)=>{}) //单个条件 User.find({age: {"$gte": 18, "$lte": 30}},(err,data)=>{}) //多条件 大于等于18小于等于30 User.find({age:{$in: 18}},(err,data)=>{}) // 等于18 User.find({age:{"$in":[18,30]}},(err,data)=>{}) //等于18,30 User.find({$or: [{name: "小明"}, {age: 20}]},(err,data)=>{}) // 查询name为小明或者age为20的所有数据 User.find({$nor: [{name: "小明"}, {age: 20}]},(err,data)=>{}) // 查询name不为小明或者age不为20的所有数据 User.find({name: {$exists: true}},(err,data)=>{}) //所有存在name属性的 模糊查找: User.find({name: {$regex: '小'}},(err,data)=>{}) //查询所有name中含有xiao的数据
更新:
let condition={ name:'小明' } User.updateOne(condition,{$set:{age:21}},(err,data)=>{}) //查找一条 User.update(condition,{$set:{age:21}},(err,data)=>{}) //多条
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- node.js开发之express4.0使用mongoose连接mongodb
- 如何在node中连接mongodb并通过_id修改对应数据
- [Node.js]连接mongodb
- Nodejs Express 连接Mongodb
- Node.js连接MongoDB
- node服务器使用mongoose与mongodb连接
- node-mongodb-native的几种连接数据库的方式
- Node.js 连接 MongoDB
- 后端-Node(express)连接mongodb到前端-访问接口将数据显示页面(一条龙)
- node.js与mongodb连接
- 基于nodejs+mongodb实现微信公众号连接
- node.js连接MongoDB数据成功之后,抛出错误,db.collection is not a function
- node.js 学习笔记五:连接mongodb
- node连接--MongoDB
- Node连接Mongodb以及CRUD操作
- 05.node连接MongoDB 和 增删改查
- node.js学习第3天,mongos 连接MongoDB
- node.js连接mongodb
- node.js通过权限验证连接MongoDB
- 04.node.js连接MongoDB