summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLauri Ojansivu <x@xet7.org>2017-02-22 17:14:20 +0200
committerLauri Ojansivu <x@xet7.org>2017-02-22 17:14:20 +0200
commitb4fd6b7004d7bfd315e08155c8f843fd2b29feb8 (patch)
tree46083001472636f51ea2806bb0afb26afe1f852a
parentcd70076af2b0d34c2fb4a0ef52c02c8f9da28a69 (diff)
parent6ca832c02b2fa87720005f277b3fcb21dcf5ae6f (diff)
downloadwekan-b4fd6b7004d7bfd315e08155c8f843fd2b29feb8.tar.gz
wekan-b4fd6b7004d7bfd315e08155c8f843fd2b29feb8.tar.bz2
wekan-b4fd6b7004d7bfd315e08155c8f843fd2b29feb8.zip
Merge branch 'maulal-devel' into devel
Improve Wekan performance by adding indexes to MongoDB
-rw-r--r--models/activities.js2
-rw-r--r--models/boards.js1
-rw-r--r--models/cards.js2
-rw-r--r--models/checklists.js4
-rw-r--r--models/unsavedEdits.js3
5 files changed, 11 insertions, 1 deletions
diff --git a/models/activities.js b/models/activities.js
index 7d262ec6..9a41d4aa 100644
--- a/models/activities.js
+++ b/models/activities.js
@@ -52,6 +52,8 @@ if (Meteor.isServer) {
Activities._collection._ensureIndex({ createdAt: -1 });
Activities._collection._ensureIndex({ cardId: 1, createdAt: -1 });
Activities._collection._ensureIndex({ boardId: 1, createdAt: -1 });
+ Activities._collection._ensureIndex({ commentId: 1 }, { partialFilterExpression: { commentId: { $exists: true } } });
+ Activities._collection._ensureIndex({ attachmentId: 1 }, { partialFilterExpression: { attachmentId: { $exists: true } } });
});
Activities.after.insert((userId, doc) => {
diff --git a/models/boards.js b/models/boards.js
index 14943d61..9323d690 100644
--- a/models/boards.js
+++ b/models/boards.js
@@ -414,6 +414,7 @@ if (Meteor.isServer) {
_id: 1,
'members.userId': 1,
}, { unique: true });
+ Boards._collection._ensureIndex({'members.userId': 1});
});
// Genesis: the first activity of the newly created board
diff --git a/models/cards.js b/models/cards.js
index ab735ad0..9c149e51 100644
--- a/models/cards.js
+++ b/models/cards.js
@@ -267,7 +267,7 @@ if (Meteor.isServer) {
// Cards are often fetched within a board, so we create an index to make these
// queries more efficient.
Meteor.startup(() => {
- Cards._collection._ensureIndex({ boardId: 1 });
+ Cards._collection._ensureIndex({ boardId: 1, createdAt: -1 });
});
Cards.after.insert((userId, doc) => {
diff --git a/models/checklists.js b/models/checklists.js
index 35be4dcc..3425f230 100644
--- a/models/checklists.js
+++ b/models/checklists.js
@@ -133,6 +133,10 @@ Checklists.mutations({
});
if (Meteor.isServer) {
+ Meteor.startup(() => {
+ Checklists._collection._ensureIndex({ cardId: 1, createdAt: 1 });
+ });
+
Checklists.after.insert((userId, doc) => {
Activities.insert({
userId,
diff --git a/models/unsavedEdits.js b/models/unsavedEdits.js
index 25952fb5..d4f3616a 100644
--- a/models/unsavedEdits.js
+++ b/models/unsavedEdits.js
@@ -26,6 +26,9 @@ if (Meteor.isServer) {
function isAuthor(userId, doc, fieldNames = []) {
return userId === doc.userId && fieldNames.indexOf('userId') === -1;
}
+ Meteor.startup(() => {
+ UnsavedEditCollection._collection._ensureIndex({ userId: 1 });
+ });
UnsavedEditCollection.allow({
insert: isAuthor,
update: isAuthor,