mongod -v
data/db
目录D:\> mongod
D:\> mongo
show dbs
db
use 数据库名
show collections
db.集合名.find()
1、使用MongoDB官方的node-mongodb-native
2.使用Mongoose模块
2.1 安装Mongoose
npm i mongoose
2.2 连接MongoDB
const mongoose = require('mongoose')
mongoose.connect('mongodb://localhost/数据库名',{useNewUrlParser: true})
2.3 设计数据库表(集合)
Schema就是一个模板,起到了预先设计数据表的作用。其中required属性为真代表了改字段不可为空
const UserSchema = new mongoose.Schema({
name:{
type: String,
required: true
},
passworld:{
type: String,
required: true
},
email:{
type:String
}
})
2.4 增加文档
mongoose.model中的第一个参数为表名,也就是集合名,第二个参数是设计好的表结构。
插入一条name为admin的文档
const User = mongoose.model('User',UserSchema) // 相当于User表集合
let Admin = new User({ //单文档
name:"admin",
passworld:"123123"
email:"123@qq.com"
})
Admin.save().than(()=>{ //Promise
console.log("success!")
},()=>{
console.log("error")
})
2.5 查找文档
方法 | 参数 | 功能 |
---|---|---|
find | [{属性:值[,…]}],(err,data)=>{} | 查找满足指定属性=值的文档数组到回调中data,第一个参数省略为无条件查找 |
findOne | [{属性:值[,…]}],(err,data)=>{} | 查找满足指定属性=值的第一条文档到回调中data,第一个参数省略为无条件查找 |
例如
cat.find({
name: "milse88"
},(err,cats)=>{
if(err){
throw err
}
console.log(cats)
})
cat.findOne((err,data)=>{
if(err){
throw err
}
console.log(data)
})
结果为:
[ { _id: 5d2be43e1fb7af12f0f745a8, name: 'milse88', __v: 0 } ] #数组
{ _id: 5d2be315679a272f2459966c, name: 'milse', __v: 0 } #对象
2.6 删除文档
方法 | 参数 | 功能 |
---|---|---|
deleteOne | [{属性:值[,…]}],(err,res)=>{} | 查找满足指定属性=值的第一个文档进行删除,第一个参数省略为无条件删除 |
deleteMany | [{属性:值[,…]}],(err,res)=>{} | 查找满足指定属性=值的所有文档进行删除,第一个参数省略为无条件查找 |
remove | [{属性:值[,…]}],(err,res)=>{} | 查找满足指定属性=值的所有文档进行删除,第一个参数省略为无条件查找 (官方文档中说明改方法以不建议使用),因此不再举例 |
Moogoose
使用正则匹配,所以条件对象中的值可以为正则表达式的形式出现(error,result)=>{}
的方式出现例如:
cat.deleteOne({
name:"milse8"
},(err,res)=>{
if(err)throw err
console.log('删除成功!')
console.log(res)
})
cat.deleteMany({
name:/milse8/m
},(err,res)=>{
if(err) throw err
console.log('删除成功!')
console.log(res)
})
结果:
删除成功!
{ n: 1, ok: 1, deletedCount: 1 }
删除成功!
{ n: 10, ok: 1, deletedCount: 10 }
2.7 更新文档
方法 | 参数 | 功能 |
---|---|---|
updateOne | [{属性:值[,…]}],{属性:值[,…]},(err,res)=>{} | 第一个参数为条件对象,第二个参数为更新对象,找到第一个满足条件的文档,按更新对象进行更新 |
updateMany | [{属性:值[,…]}],{属性:值[,…]},(err,res)=>{} | 找到所有满足条件的文档,按更新对象进行更新,如第一个条件缺省,则更新数据库中的所有文档 |
例如
cat.updateOne({
name: 'milse1'
},{
name: 'maojiankai'
},(err,res)=>{
console.log(res)
})
cat.updateMany({
name: /milse1/m
},{
name: 'maojiankai'
},(err,res)=>{
console.log(res)
})
结果
{ n: 1, nModified: 1, ok: 1 }
{ n: 10, nModified: 10, ok: 1 }
2.8 设置全局属性
mongoose中提供了设置全局属性的方法,这将运用到含有该属性的方法中去
mongoose.set('属性名',值)
例如,我们可以将原来的连接数据库方式改为
//原来
mongoose.connect('mongoose://localhost/数据库名',{'useNewUrlParser': true})
//改为 :
mongoose.set('useNewUrlParser',true)
mongoose.connect('mongoose://localhost/数据库名')
useNewUrlParser
选项传递给 mongoose.connect()
或mongoose.createConnection()
。