在mongodb中制作或模拟连接

我想用mongoose在mongodb中模拟连接查询。 没有嵌套数据,只有两个Schema,其中OrderSchema:_id引用了DetailSchema:orderId

得到所有订单然后逐一查询每个细节是一个糟糕的解决scheme。 我曾尝试使用mongoose填充,但只有如果我改变了计划,这是不可能的。 我简直想不出干干净净的做法!

var OrderSchema = mongoose.Schema({ _id: Number, customerId: String, employeeId: Number, orderDate: String, requiredDate: String, shippedDate: String, shipVia: String, freight: Number, shipName: }); exports.OrderModel = mongoose.model('orders', OrderSchema); var DetailsSchema = mongoose.Schema({ orderId: Number, productId: quantity: Number, discount: Number }); 

只需更改您的DetailSchema定义,将orderId定义为对Order的引用:

 var DetailsSchema = mongoose.Schema({ orderId: {type: Number, ref: 'Order'}, productId: Number, quantity: Number, discount: Number }); 

这不需要对现有文档中的实际数据进行任何更改, ref只是Mongoose用来知道哪个模型的_id字段包含引用的元数据。

有了这个,您可以使用populate来提取订单详细信息,如下所示:

 Details.find().populate('orderId').exec(function(err, details) { ... }); 
Interesting Posts