【发布时间】:2021-06-15 17:43:16
【问题描述】:
我有一些集合,我正在尝试将日志对象转换为其详细信息(使用 populate)。
Companies(公司及其用户):
[
{
_id: "comp123",
companyId: "compName123",
users: [
{ user: "user111", status: "active"},
{ user: "user222", status: "active"},
]
},
{
_id: "comp456",
name: "compName456",
users: [
{ user: "user333", status: "active"}
]
},
{
_id: "comp789",
name: "compName789",
users: [
{ user: "user444", status: "inactive"}
]
},
]
Users:
[
{_id: "user111", firstName: "userName111"},
{_id: "user222", firstName: "userName222"},
{_id: "user333", firstName: "userName333"},
{_id: "user444", firstName: "userName444"},
]
我正在尝试将log 集合转换为数据。
examples:
对于log的第一个对象:
{
companyId: "comp123",
actionDetails: [
entities: [
{ id: "user111", entityType: "User"}
]
]
},
我希望它返回:
{
companyId: {_id: "comp123", name: "compName123"}, // taken from companies
userId: { _id: "user111", firstName: "userName111"}, // taken from users
// Does company=comp123 that has a user with user=user111 and status=active exist?
isUserActiveInCompany: true
}
另一个日志示例:
{
companyId: "comp456",
actionDetails: [
entities: [
{ id: "user444", entityType: "User"}
]
]
}
输出是:
{
companyId: {_id: "comp456", name: "compName456"}, // taken from companies
userId: { _id: "user444", firstName: "userName444"}, // taken from users
isUserActiveInCompany: false // Does company=comp456 that has a user with user=user444 and status=active exist?
}
最后一个重要的日志示例:
{
companyId: "comp789",
actionDetails: [
entities: [
{ id: "attr333", entityType: "Attribute"}
]
]
}
输出:
{
companyId: {_id: "comp789", name: "compName789"}, // taken from companies
userId: {}, // taken from users (entityType is Attribute so we ignore it)
isUserActiveInCompany: null // entityType is Attribute so we ignore it
}
如果有用户 444 的 comp789 日志,isUserActiveInCompany 应该为 false(因为用户在他的公司中不活跃)。
目前,我这样做:
populate([
{
path: "actionDetails.entities.id",
select: "id firstName",
},
{
path: "companyId",
select: "name",
},
]
任何帮助表示赞赏!
【问题讨论】:
-
我的问题清楚了吗?谢谢。
-
其实对我来说有点难以理解。请提供来自集合和预期输出的示例输入
-
@hhharsha36,我现在添加。谢谢。
-
actionDetails和entities都是日志集合中的数组吗? -
@hhharsha36,是的。