有些需求会需要我们对数据库做联表查询操作,在SQL中的连表查询大家可能比较熟悉,但是不是很了解mongodb数据库的联表查询。对此下面就给大家分享mongodb数据库的联表查询实现。
注意:这里只对同库联表查询做介绍,跨库联表查询可能在之后也会介绍(因为公司架构变动,之后可能会联表查询)。我用到的联表查询有两种,一种是mongoose的populate
populate是使用外键关联子表
例如现在有一张订单表结构(动态外键):
var orderSchema = new mongoose.Schema({
uid: { type: String, required: true }, // 用户id
amount: { type: Number, required: true },
oType: { type: Number, required: true }, // 订单类型
status: { type: Number, required: true }, // 订单的状态:1完成 2未完成 3失效
})
用户表:
var userSchema = new mongoose.Schema({
phone: String,
status: String,
createdAt: Date,
updatedAt: Date
})
现在我想根据查询order表,并返回对应用户phone字段
order.find().populate({path: 'uid', model: User, select: '_id real_name phone bankcard'}).exec(function(err, order) {
// order: {
// uid: {
// phone: '15626202254',
// status: "expand",
// createdAt: Date,
// updatedAt: Date
// },
// amount: 5000,
// oType: 2, // 订单类型
// status: 1, // 订单的状态:1完成 2未完成 3失效
// }
});
这里order表的uid指向了user表的_id字段,当然也可以在新建表的时候定义外键,这里就不细说了
关于mongodb 联表查询的内容就介绍到这,上文为个人经验,代码仅供大家参考,需要的朋友可以看看,希望大家阅读完这篇文章能有所收获。