在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) { ... });