mongoose 操作mongodb数据库二
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mongoose 操作mongodb数据库二,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3500字,纯文字阅读大概需要6分钟。
内容图文
![mongoose 操作mongodb数据库二](/upload/InfoBanner/zyjiaocheng/913/cb951609a3dd41c28e197a2c714b9f65.jpg)
扩展schema静态方法和实例方法
var UserModel=require('./model/user.js');
// var user = new UserModel({
// name: '赵六',
// sn:'123456781',
// age: 29
// });
// user.save();
// UserModel.findBySn('123456781',function(){})
// 静态方法this指向model
UserModel.findBySn('123456782',function(err,docs){
if(err){
console.log(err);
return;
}
console.log(docs)
})
var user = new UserModel({
name: '赵六',
sn:'123456781',
age: 29
});
// user.save();
user.print(); //自定义的实例方法,this指向实例
var mongoose=require('./db.js');
var UserSchema=mongoose.Schema({
name:{
type:String
},
sn:{
type:String,
index:true
},
age:Number,
status:{
type:Number,
default:1
}
})
//静态方法
UserSchema.statics.findBySn=function(sn,cb){
//通过 find方法获取 sn的数据 this 关键字获取当前的model
this.find({"sn":sn},function(err,docs){
cb(err,docs)
})
}
// 实例方法 (基本不用)
UserSchema.methods.print=function(){
console.log('我是一个实例方法')
console.log(this.name)
}
module.exports=mongoose.model('User',UserSchema,'user');
var mongoose=require('./db.js');
//mongoose数据校验:用户通过mongoose给mongodb数据库增加数据的时候,对数据的合法性进行的验证
//mongoose里面定义Schema:字段类型,修饰符、默认参数 、数据校验都是为了数据库数据的一致性
//Schema,为数据库对象的集合,每个schema会映射到mongodb中的一个collection,定义Schema可以理解为表结构的定义
var UserSchema=mongoose.Schema({
name:{
type:String,//指定类型
trim:true, //修饰符
required:true
},
sn:{
type:String,
index:true, //索引.
set(val){ //自定义修饰符
return val;
},
// maxlength:20,
// minlength:10
// match:/^sn(.*)/ ,
validate: function(sn) {
return sn.length >= 10;
}
},
age:{
type:Number,
min:0, //用在number类型上面
max:150
},
status:{
type:String,
default:'success', //默认值
enum:['success','error'] //status的值必须在 对应的数组里面 注意枚举是用在String
}
})
module.exports=mongoose.model('User',UserSchema,'user');
schema中获取_id mongoose.Types.ObjectId
/*
db.order.aggregate([
{
$lookup:
{
from: "order_item",
localField: "order_id",
foreignField: "order_id",
as: "items"
}
},
{
$match:{"all_price":{$gte:90}}
}
])
*/
/*查询order_item,找出商品名称是酸奶的商品,酸奶这个商品对应的订单的订单号以及订单的总价格*/
var OrderItemModel=require('./model/order_item.js');
var OrderModel=require('./model/order.js');
var mongoose=require('mongoose');
//第一种实现方式
/*
OrderItemModel.find({"_id":"5b743da92c327f8d1b360546"},function(err,docs){
// console.log(docs);
var order_item=JSON.parse(JSON.stringify(docs));
var order_id=order_item[0].order_id;
OrderModel.find({"order_id":order_id},function(err,order){
// console.log(order);
order_item[0].order_info=order[0];
console.log(order_item)
})
})
*/
//第二种方式
//mongoose中获取ObjectId mongoose.Types.ObjectId
OrderItemModel.aggregate([
{
$lookup:
{
from: "order",
localField: "order_id",
foreignField: "order_id",
as: "order_info"
}
},{
$match:{_id: mongoose.Types.ObjectId('5b743da92c327f8d1b360546')}
}
],function(err,docs){
if(err){
console.log(err)
return;
}
console.log(JSON.stringify(docs))
})
/*
db.order.aggregate([
{
$lookup:
{
from: "order_item",
localField: "order_id",
foreignField: "order_id",
as: "items"
}
},
{
$match:{"all_price":{$gte:90}}
}
])
*/
var OrderModel=require('./model/order.js');
//查询order 表的数据
/*
OrderModel.find({},function(err,docs){
console.log(docs);
})
*/
//order表关联order_item
OrderModel.aggregate([
{
$lookup:
{
from: "order_item",
localField: "order_id",
foreignField: "order_id",
as: "items"
}
},
{
$match:{"all_price":{$gte:90}}
}
],function(err,docs){
if(err){
console.log(err);
return;
}
console.log(JSON.stringify(docs))
})
内容总结
以上是互联网集市为您收集整理的mongoose 操作mongodb数据库二全部内容,希望文章能够帮你解决mongoose 操作mongodb数据库二所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。