【发布时间】:2018-06-20 16:10:45
【问题描述】:
我有以下使用 MongoDB 和 Mongoose 的集合结构:
const UserSchema =
{
"name": {
"type": "String",
"required": true,
"unique": true
},
"company_id": {
"type": "ObjectId"
"ref": "Company"
"required": true
}
const CompanySchema =
{
"name": {
"type": "String",
"required": true,
"unique": true
},
"ein": {
"type": "String"
}
}
获取所有未被任何用户引用的公司(所有没有用户的公司)的最快方法是什么?
我的第一个难题是:
User.find({}).exec()
.then(users => {
Company.find({ id: { $in: users}}).exec()
})
.then(companiesWithoutRefs => {
return companiesWithoutRefs;
})
.catch(err => {
throw new err;
});
问题:
承诺的结构是否正确?
是否需要将 $in: users 语句转换为 ObjectId?如何处理多个值?
最后也是最重要的一个:
- 有没有办法在不完全加载用户集合的情况下执行此查询,更智能的方法?
感谢您的帮助。
【问题讨论】:
标签: node.js mongodb mongoose mongodb-query aggregation-framework