Node中使用MongoDB
Posted DEUScx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Node中使用MongoDB相关的知识,希望对你有一定的参考价值。
简介
MongoDB是一个介于关系数据库和非关系数据库(nosql)之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
Mongoose
在Node中可以使用 Mongoose库来连接数据库
mongoose中文文档
npm i mongoose -s
基础操作
连接数据库
const mongoose = require('mongoose');
//连接指定数据库
mongoose.connect(
'mongodb://ip地址/数据库名称',
{
useNewUrlParser: true,
useUnifiedTopology: true
}
);
const conn = mongoose.connection;
//绑定连接完成监听
conn.on('connected',function () {
console.log('数据库连接成功');
})
创建model
用Schema来定义数据对象的结构
通过 mongoose.model(表名,数据对象) 来定义model
//得到对应特定集合的model (文档:数据对象, 集合:数据表)
const Schema = mongoose.Schema;
const userSchema = new Schema({ //文档结构: 属性名属性值
name: { type: String, default: 'hahaha' },
age: { type: Number, min: 18, index: true },
bio: { type: String, match: /[a-z]/ },
password: {type:String}
});
//定义Model
const UserModel = mongoose.model('user',userSchema);//创建了users集合
增删查改
通过上一步创建的Model来实现增删查改
相关的CRUD函数: https://mongoosejs.com/docs/queries.html
//增
function saveTest() {
//创建实例
const userModel = new UserModel({
username: 'admin',
age: 19,
bio:"z",
password:md5('12345') //利用 blueimp-md5库,将密码加密
});
userModel.save(function (err, data) {
console.log('save()',err,data);
})
}
//删
function deleteTest() {
UserModel.deleteOne(
{
_id: '5e4d1c324abf031e98915a65'
},(err, product) => {
console.log('delete ',err,product);
}
)
}
//查 通过find()/findOne()/findById
function findTest() {
UserModel.find(
(err,doc)=>{
console.log('find()',err,doc)
}
);
UserModel.findOne({username: 'admin'},
function (err,doc) {
console.log('findOne()',err,doc)
})
}
//改
function updateTest() {
UserModel.findByIdAndUpdate({
_id: '5e4d1c324abf031e98915a65'
},{
username: 'newName'
},
function (err,doc) {
console.log('findByIdAndUpdate',err,doc)
})
}
官方的条件查询例子
// With a JSON doc
Person.
find({
occupation: /host/,
'name.last': 'Ghost',
age: { $gt: 17, $lt: 66 },
likes: { $in: ['vaporizing', 'talking'] }
}).
limit(10).
sort({ occupation: -1 }).
select({ name: 1, occupation: 1 }).
exec(callback);
// Using query builder
Person.
find({ occupation: /host/ }). //模糊查询:正则表达式
where('name.last').equals('Ghost').
where('age').gt(17).lt(66).
where('likes').in(['vaporizing', 'talking']).
limit(10).
sort('-occupation').
select('name occupation').
exec(callback);
条件操作符:
$gt -------- greater than >$gte --------- gt equal >=
$lt -------- less than <
$lte --------- lt equal <=
$ne ----------- not equal !=
$eq -------- equal =
$in:[] 满足其中一个在该数组之内 其相反为 $nin
limit 读取指定数量的记录 skip 跳过指定数量的记录
升降排序 升序关键字:‘asc‘ / ‘ascending‘ / 1 降序关键字:‘desc‘ / ‘descending‘ / -1
// 以 "field" 升序 并且 "test" 降序
query.sort({ field: ‘asc‘, test: -1 });
// 等同于
query.sort(‘field -test‘);select 用于包含和排除某些属性
// include a and b, exclude other fields
query.select(‘a b‘);
// exclude c and d, include other fields
query.select(‘-c -d‘);
以上是关于Node中使用MongoDB的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 Node.js 和 Mongoose 插入 MongoDB