Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- db.getCollection('communities').aggregate([
- {
- $match: {
- 'value.managers': ObjectId('5e6e22147de0fc000ffd24d0'),
- _id: ObjectId('5e812a9a2b21e4000f0e6311'),
- },
- },
- {
- $addFields: {
- manager_requesting: ObjectId('5e6e22147de0fc000ffd24d0'),
- },
- },
- // fetch requesting manager data
- {
- $lookup: {
- from: 'users',
- localField: 'manager_requesting',
- foreignField: '_id',
- as: 'manager',
- },
- },
- { $unwind: '$manager' },
- // fetch ideas for community
- {
- $lookup: {
- from: 'ideas',
- let: { cummunityId: '$_id' },
- pipeline: [
- {
- $match: {
- $expr: {
- $eq: ['$community', '$$cummunityId'],
- },
- },
- },
- // fetch views data
- {
- $lookup: {
- from: 'user_actions_history',
- localField: '_id',
- foreignField: 'meta.ideaId',
- as: 'views',
- },
- },
- // fetch idea owner data
- {
- $lookup: {
- from: 'users',
- let: { owner: '$owner' },
- pipeline: [
- {
- $match: {
- $expr: {
- $eq: ['$_id', '$$owner'],
- },
- },
- },
- {
- $project: {
- _id: 0,
- fName: 1,
- lName: 1,
- email: 1,
- faculty: 1,
- role: 1,
- jobTitle: 1,
- },
- },
- ],
- as: 'idea_owner',
- },
- },
- { $unwind: '$idea_owner' },
- {
- $project: {
- _id: 0,
- title: 1,
- description: 1,
- requesting_manager_name: '$manager.fname',
- owner_fName: "$idea_owner.fName",
- owner_lName: "$idea_owner.lName",
- email: "$idea_owner.email",
- rank: 1,
- likes: { $size: "$likes" },
- views: { $size: "$views" },
- updatedAt: 1,
- },
- },
- ],
- as: 'ideasByCommunity',
- },
- },
- { $unwind: "$ideasByCommunity" },
- {
- $group: {
- _id: null,
- // name: '$value.name',
- // requesting_manager_name: { $concat: ['$manager.fname', ' ', '$manager.lname'] },
- // requesting_manager_email: '$manager.email',
- ideasByCommunities: {
- $push: {
- name: '$value.name',
- requesting_manager_name: { $concat: ['$manager.fname', ' ', '$manager.lname'] },
- requesting_manager_email: '$manager.email',
- title: '$ideasByCommunity.title',
- description: '$ideasByCommunity.description',
- owner_fName: "$ideasByCommunity.owner_fName",
- owner_lName: "$ideasByCommunity.owner_lName",
- email: "$ideasByCommunity.email",
- rank: "$ideasByCommunity.rank",
- likes: "$ideasByCommunity.likes",
- views: "$ideasByCommunity.views",
- updatedAt: 1,
- }
- },
- // ideasByCommunities: '$ideasByCommunity',
- },
- },
- ]).toArray();
Advertisement
Add Comment
Please, Sign In to add comment