mongodb - MongoDB查找然后项目
问题描述
我有两个集合 -jobs
并且companies
- 它们具有多对一的关系,因此许多jobs
存在于一个companies
记录中。
jobs
具有以下字段:
job_id, company_id, last_updated, j_foo, j_bar
companies
具有以下字段:
company_id、名称、some_url、c_foo、c_bar
我现在的查询:
var matchObj = {'company_id':'some_company'};
var lookupObj = {from:'companies',localField:'company_id',foreignField:'company_id',as:'company_info'};
var projectObj = {'job_id':1,'company_id':1,'last_updated':1};
var sortObj = {'last_updated':-1};
jobs.aggregate({$match:queryObj},{$lookup:queryLookup},{$project:queryProject},{$sort:sortObj}).toArray(function(err,results){
doSomething();
});
返回比我需要的更多的数据:
[
{
job_id: val,
company_id: val,
last_updated: date,
j_foo: val,
j_bar: val,
company_info: [{
company_id: val, name: val, some_url: val, c_foo: val, c_bar: val
}] // I don't want company_info as an array ideally,
// rather just have the object since it's a to-one relationship
// it's always just one result. This isn't critical,
// just would be a nicety if you can help with this too
},
{
job_id: val,
company_id: val,
last_updated: date,
j_foo: val,
j_bar: val,
company_info: [{
company_id: val, name: val, some_url: val, c_foo: val, c_bar: val
}]
}
]
我想要的输出是:
[
{
job_id: val,
company_id: val,
last_updated: date,
company_info: {
name: val, some_url: val
}
},
{
job_id: val,
company_id: val,
last_updated: date,
company_info: {
name: val, some_url: val
}
}
]
如果输出是:我也可以:
[
{
job_id: val,
company_id: val,
last_updated: date,
company_name: val,
company_some_url: val
},
{
job_id: val,
company_id: val,
last_updated: date,
company_name: val,
company_some_url: val
}
]
如何投影查找查询?或者还有其他使用 $addFields 的方法吗?
解决方案
推荐阅读
- android - 将用户自动登录到android应用程序的更好方法是什么?
- azure-active-directory - 如何使用 Microsoft Graph API 从用户配置文件中获取组织(租户)ID
- ios - 更改子视图的高度后调整超级视图的大小 - 没有自动布局
- powershell - PowerShell PSCustomObject 内容编辑
- wso2 - 在本机桌面应用程序上使用 WSO2
- r - 通过不同的列将列表中的多个数据框合并到另一个数据框
- python-3.x - AIRFLOW:如何设置对多个任务运行的依赖关系
- python - 如何在核心用户下在 CoreOS 上安装 Python?
- scala - 为什么`xs reverse_::: ys`有效?
- xquery - 错误 - '/' 的第一个操作数的必需项类型是 node();提供的值具有项目类型 xs:untypedAtomic