Mongoose Aggregation (join operation)
JS
S
JavaScriptUsing Bluebird as a Promise Library for mongoose. Mongoose > ~4.15. In this example we join 2 collections: Telemetry <-> Sample
1const Logger = require('../logger');
2
3function run() {
4 return new Promise((resolve, reject) => {
5 // Pipeline Operations
6 const start = moment('2018-03-01')
7 .startOf('day')
8 .toDate();
9 const end = moment('2018-03-26')
10 .endOf('day')
11 .toDate(); // to send
12
13 const query = {
14 timestamp: {
15 $gte: start,
16 $lt: end
17 },
18 telemetry: {
19 $exists: true
20 }
21 };
22
23 TelemetryModel.aggregate()
24 .match(query)
25 .lookup({
26 from: 'sample',
27 localField: 'sample',
28 foreignField: '_id',
29 as: 'sample'
30 })
31 .project({
32 _id: '$_id',
33 name: '$name',
34 telemetry: '$telemetry'
35 })
36 .exec()
37 .each(telemetry => {
38 Logger.log(telemetry);
39 })
40 .then(completed => {
41 resolve('completed');
42 });
43 });
44}Created on 3/26/2018