Classroom counts script
This commit is contained in:
parent
66b1e1b61d
commit
84acec2880
1 changed files with 44 additions and 0 deletions
44
scripts/analytics/mongodb/queries/classroomCounts.js
Normal file
44
scripts/analytics/mongodb/queries/classroomCounts.js
Normal file
|
@ -0,0 +1,44 @@
|
|||
// Print out classrooms ordered by size
|
||||
|
||||
// Usage:
|
||||
// mongo <address>:<port>/<database> <script file> -u <username> -p <password>
|
||||
|
||||
var userClassroomMap = {};
|
||||
var cursor = db.classrooms.find({$where: 'this.members.length > 40'}, {ownerID: 1, name: 1, members: 1});
|
||||
while (cursor.hasNext()) {
|
||||
var doc = cursor.next();
|
||||
var userID = doc.ownerID.valueOf();
|
||||
if (!userClassroomMap[userID]) userClassroomMap[userID] = [];
|
||||
userClassroomMap[userID].push({
|
||||
classroomID: doc._id,
|
||||
className: doc.name,
|
||||
count: doc.members.length
|
||||
});
|
||||
}
|
||||
|
||||
var userIDs = [];
|
||||
for (var userID in userClassroomMap) {
|
||||
userIDs.push(new ObjectId(userID));
|
||||
}
|
||||
|
||||
var classrooms = [];
|
||||
cursor = db.users.find({_id: {$in: userIDs}}, {email: 1});
|
||||
while (cursor.hasNext()) {
|
||||
var doc = cursor.next();
|
||||
var userID = doc._id.valueOf();
|
||||
for (var i = 0; i < userClassroomMap[userID].length; i++) {
|
||||
classrooms.push({
|
||||
ownerID: userID,
|
||||
email: doc.email,
|
||||
classroomID: userClassroomMap[userID][i].classroomID,
|
||||
className: userClassroomMap[userID][i].className,
|
||||
count: userClassroomMap[userID][i].count
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
classrooms.sort(function(a, b) { return a.count > b.count ? -1 : 1;});
|
||||
for (var i = 0; i < classrooms.length; i++) {
|
||||
print(classrooms[i].count, classrooms[i].className, classrooms[i].email, classrooms[i].classroomID.valueOf());
|
||||
}
|
||||
print("Total classes:", classrooms.length);
|
Reference in a new issue