nodejs+mongoose()连表查询
来源:互联网 发布:linux 内核参数 编辑:程序博客网 时间:2024/06/14 10:40
首先,我们定义三个Schema
drawApply = new Schema({ salesId: { type: Schema.ObjectId, ref: 'sales' }, money: Number, status: { type: Number, default: 0 }, createTime: { type: Date, default: Date.now }});sales = new Schema({ name: { type: String, required: true, unique: true }, pwd: String, phone: String, merchant: { type: Schema.ObjectId, ref: 'merchant' }, status: { type: Number, default: 0 }});merchant = new Schema({ name: String, sname: String, type: String});
返回的结果中除了drawApply表的数据外,还会包含salesId中_id,name,phone,merchant四个属性的值(注:需要查看什么属性就在第二个参数中明示,若populate方法中只有salesId参数,则会将sales表中所有属性返回)。但是merchant属性的值是以ObjectId的形式显示的,如果想知道对应的merchant其它属性的值,则需要再次使用到嵌套的populate。代码如下:
drawApply.find().populate({ path: 'salesId', select: '_id name phone merchant', model: 'sales', populate: { path: 'merchant', select: '_id sname', model: 'merchant' }).sort({createTime: -1}).exec(function(err, list) { // list of drawApplies with salesIds populated and merchant populated});
如果drawApply表中还存在其它ObjectId类型的字段,则可以在populate方法后面继续跟其它的populate,使用方法相同,如:
drawApply.find().populate({ path: 'salesId', select: '_id name phone merchant', model: 'sales', populate: { path: 'merchant', select: '_id sname', model: 'merchant' }) .populate('approver', 'name') .populate('operator', 'name') .sort({createTime: -1}).exec(function(err, list) { // list of drawApplies with salesIds populated and merchant populated});
阅读全文
0 0
- nodejs+mongoose()连表查询
- nodejs+mongoose连
- Mongoose简单的连表查询
- nodejs操作mongodb数据库(mongoose)
- nodejs基础教程-简单blog(2)-mongoose
- NodeJS 安装mongoose(备忘)
- nodejs/express+mongodb/mongoose
- nodejs mongoose示例
- Nodejs mongoose操作mongodb
- nodejs mongoose 数据库处理
- [nodejs]mongoose学习1
- 7.Nodejs入门-----Mongoose
- 快速上手Nodejs mongoose
- Mongoose 查询不到自己写的表
- Nodejs学习笔记(十四)— Mongoose介绍和入门
- SQL总结(二)连表查询
- SQL总结(二)连表查询
- SQL总结(二)连表查询
- mysql,命令导入\导出表结构或数据
- 仿新闻类实现滑动选择标签(一)
- Tool-webpack学习笔记-入门
- 定时任务
- 程序员需要关注的十个大数据技术
- nodejs+mongoose()连表查询
- 解决中文乱码问题
- 20170531练习赛比赛总结
- github常见操作和常见错误!错误提示:fatal: remote origin already exists.
- Android实现购物车(附demo)
- vi或vim查找替换
- 数据结构课程设计实战
- retrofit详细使用
- 比特币开发专题(区块链内核密钥、地址、钱包)