【发布时间】:2017-03-28 22:42:22
【问题描述】:
我正在使用 node.js 进行 mongodb 连接查询,我有两个集合,我想加入两个集合并想要填充数据。
饮品系列
[{
"_id": "580a2f7615a0161010a23bfg",
"name": "Pepsi",
"createDate": "2016-10-21T15:08:27.405Z"
}, {
"_id": "580a2f7615a0161010bge345",
"name": "Mirinda",
"createDate": "2016-10-21T15:08:27.405Z"
}, {
"_id": "580a2f7615a0161010vbgdt5",
"name": "Coke",
"createDate": "2016-10-21T15:08:27.405Z"
}, {
"_id": "580a2f7615a0161010vb9876",
"name": "Thums Up",
"createDate": "2016-10-21T15:08:27.405Z"
}, {
"_id": "580a2f7615a0161010vbgmnk9",
"name": "Slice",
"createDate": "2016-10-21T15:08:27.405Z"
}]
订单收集
[{
"_id": "580fa9a92bb22e783b298798",
"created_at": "2016-10-25T18:41:53.716Z",
"tab": [{
"created_at": "2016-10-26T00:21:33.100Z",
"cost": 30,
"quantity": 7,
"name": "Mirinda"
}]
},
{
"_id": "580fa9a92bb22e783b29887h",
"created_at": "2016-10-25T18:41:53.716Z",
"tab": [{
"created_at": "2016-10-26T00:21:33.100Z",
"cost": 25,
"quantity": 5,
"name": "Pepsi"
}]
}]
所以我想通过加入 Drinks 集合来找到 Order 集合的名称。
订单架构
var mongoose = require("mongoose");
var OrderSchema = new mongoose.Schema({
tab: [{
quantity: Number,
cost: Number,
name: {
type: String
},
created_at: {
type: Date
}
}],
});
module.exports = mongoose.model("Order", OrderSchema);
饮品架构
var mongoose = require('mongoose'),
utilities = require('../config/utilities');
var DrinkSchema = mongoose.Schema( {
drinks_name: { type: mongoose.Schema.Types.ObjectId, ref: 'Order' },
name: {
type: String
},
id: {
type: String
},
createDate: {
type: String
},
})
module.exports = mongoose.model("Drinks", DrinkSchema);
Node.js 代码
var Drinks = require("../models/drinks"),
Orders = require("../models/orders"),
async = require('async'),
mongoose = require('mongoose');
exports.getOrdersList = function(req, res) {
//How to Join Drinks and Orders Collection ?
Drinks
.find({})
.populate('drinks_name', 'tab.name')
.exec(function (err, result) {
console.log('The Drinks List is', result);
});
}
请仔细阅读我上面的帖子,如果您有任何解决方案,请告诉我。
【问题讨论】:
-
我不确定 MongoDB 中是否有任何允许连接的内置功能。
-
嘿,我猜聚合查询会起作用
-
通过代码执行连接或检查猫鼬引用和人口。
-
@My Chat:您是否正在寻找使用订单查找填充饮料名称?
-
@My Chat : 我发布了答案检查...
标签: node.js mongodb collections