2
我有一個Node,Express和使用骨幹的設置。一切工作正常,我能夠從MongoDB集合中檢索記錄,當它們很簡單時,例如通過id或所有員工獲取員工。我聽唔明您是如何從MongoDB中需要更復雜的查詢語法類似下面的集合:如何使用MongoDB執行`has many`關聯的查詢
db.employees.aggregate(
[
{ $group : { _id : "$managerName", employees: { $push: "$fullName" } } }
]
)
我現在有用於提取我想公開爲JSON對象中的數據的語法如下並綁定到我的html頁面中的元素。
exports.findById = function(req, res) {
var id = parseInt(req.params.id);
db.collection('employees', function(err, collection) {
collection.findOne({'id': id}, function(err, item) {
res.jsonp(item);
});
});
};
我想所有的經理和他們的員工,爲他們的報告,然後這個結果設置爲個人的div將列出一個經理的列表標題莫名其妙地結合,然後所有報告的員工列表給他們作爲列表項。結果集基本上由父母和孩子組成。我想使用backbonejs動態地執行此操作。
請問我可以做這樣的事情
exports.findRelations = function(req, res) {
db.collection('employees', function(err, collection) {
collection.aggregate({ $group : { _id : "$managerName", employees:{$push: "$fullName" } } }, function(err, item) {
res.jsonp(item);
});
});
};
謝謝。我得到它的工作,但有一些奇怪的。當我在robomongo中運行我的MongoDB腳本時,我得到了正確的結果集,這是管理員的員工列表。因此,所有經理都列出,然後嵌套都是向他們報告的所有員工。但是當我在上面的代碼中使用相同的確切語法時,我得到的結果集只是我集合中的所有記錄,就好像我的MongoDB腳本被忽略了一樣。爲什麼會這樣? –
您在RoboMongo中執行了哪些代碼? – gnerkus
我想我現在明白你的問題。 MongoDB客戶端(通過RoboMongo)和MongoDB的Node.js驅動程序的語法不同。雖然客戶端需要這種形式的查詢:'db.employees',Node.js驅動程序需要以這種形式查詢:'db.collection('employees')' – gnerkus