Mongojs从两个集合中提取数据并合并结果
Mongojs fetching data from two collections and merging the result
我是mongodb的新手,非常感谢在下面描述的问题上提供帮助。
我有两个收藏品"用户"answers"包"。用户收集方案具有{username,firstname,lastname},袋子收集方案具有{username,bagname,bagimage}。
在提取用户包时,我还想显示名字和姓氏。我的问题是,我似乎无法正确地构建查询。我使用的是nodejs和mongojs驱动程序。以下是我提取所有行李的查询
thmConfig.db.bags.find({status: "1"}).sort({$natural:-1}, function(err, data)
{
var bagList = '{"bags":[';
if( err || !data) res.send('[{"status": "0"}]');
else data.forEach( function(innerData) {
console.log(innerData.username);
bagList += JSON.stringify(innerData)+",";
/*
This is where I would lke to also append the firstname from the
users collection
*/
});
console.log(bagList.slice(0,1));
res.write(magList.slice(0,-1));
res.end(']}');
});
我将非常感谢有关这方面的任何帮助或建议。我没有改变驱动程序的选择,所以我现在特别想使用mongojs来实现这一点。
谢谢和问候,Titash
我认为除了从users集合中读取并以编程方式执行此"联接"操作之外,您别无选择。您可以读取每个包的用户文档(在循环中),也可以提前将整个用户集合读取到一个对象中,并通过用户名进行查找
您可以使用$in
运算符。
伪代码(ish):
// get an array of bags matching your query
db.bags.find({status: "1"}).sort({$natural:-1}, function(err, bags) {
// get a list of usernames from the bags:
var usernames = bags.map(function(bag) { return bag.username; });
// perform query on user table: find all users for which we have a bag
db.users.find({ username : { $in : usernames } }, function(err, users) {
// create a mapping of username -> first name for easy lookup
var usernames = {};
users.forEach(function(user) {
usernames[user.username] = user.firstname;
});
// map first names to bags
bags.forEach(function(bag) {
bag.firstname = usernames[bag.username];
});
// done: return it as JSON (no need to build a JSON string ourselves)
res.send({ bags : bags });
});
});
相关文章:
- 如何使用另一个字符串作为模板从字符串中提取数据
- 如何使用angular js从2个表(在sql server中)中提取数据
- 从Angular 2中的observable中提取数据
- Mongoose查询在两个日期时间之间提取数据
- 可以't从xml文件中提取数据
- 从HTML代码中提取数据
- 使用JavaScript或AJAX从HTML表单中提取数据,然后将其传递给PHP
- 正在从JSON.stringify中提取数据
- Scrapy和Xpath从javascript代码中提取数据
- 如何从高股价图中提取数据
- 如何在javascript中使用localStorage从数组中存储和提取数据
- 如何从Promise中提取数据
- 为什么我的Backbone Collection没有提取数据
- 从jQuery变量中提取数据,增加's left,将剥离的数据放回变量中
- 如何使用应用程序脚本执行API从谷歌工作表中提取数据
- 使用ng repeat从两个不同的JSON文件中提取数据
- 创建新的javascript数组,从对象属性中提取数据
- 如何使用 jQuery 在没有类的情况下提取数据
- 使用javascript从JSON中提取数据
- React组件从Flux存储中呈现数据,但从Mongo数据库中提取数据时不呈现