mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-05-07 00:17:15 +02:00
perf: convert expireAt index to partial
no need to store null in index for all documents
This commit is contained in:
@@ -87,9 +87,13 @@ mongoModule.createIndices = async function () {
|
||||
await collection.createIndex({ _key: 1, score: -1 }, { background: true });
|
||||
await collection.createIndex({ _key: 1, value: -1 }, { background: true, unique: true, sparse: true });
|
||||
await collection.createIndex(
|
||||
{ members: 1, _key: 1}, { background: true, partialFilterExpression: { members: { $exists: true } } }
|
||||
{ members: 1, _key: 1},
|
||||
{ background: true, partialFilterExpression: { members: { $exists: true } } }
|
||||
);
|
||||
await collection.createIndex(
|
||||
{ expireAt: 1 },
|
||||
{ expireAfterSeconds: 0, background: true, partialFilterExpression: { expireAt: { $exists: true } } },
|
||||
);
|
||||
await collection.createIndex({ expireAt: 1 }, { expireAfterSeconds: 0, background: true });
|
||||
winston.info('[database] Checking database indices done!');
|
||||
};
|
||||
|
||||
|
||||
26
src/upgrades/4.11.0/expireAt-partial-index.js
Normal file
26
src/upgrades/4.11.0/expireAt-partial-index.js
Normal file
@@ -0,0 +1,26 @@
|
||||
'use strict';
|
||||
|
||||
|
||||
const db = module.parent.require('./database');
|
||||
|
||||
module.exports = {
|
||||
name: 'Change expireAt index to partial index',
|
||||
timestamp: Date.UTC(2026, 3, 3),
|
||||
method: async function () {
|
||||
const nconf = require.main.require('nconf');
|
||||
const isMongo = nconf.get('database') === 'mongo';
|
||||
if (!isMongo) {
|
||||
return;
|
||||
}
|
||||
await db.client.collection('objects').dropIndex('expireAt_1');
|
||||
await db.client.collection('objects').createIndex(
|
||||
{ expireAt: 1 },
|
||||
{
|
||||
expireAfterSeconds: 0,
|
||||
background: true,
|
||||
partialFilterExpression: { expireAt: { $exists: true } },
|
||||
},
|
||||
);
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user