mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-01 19:46:01 +01:00
feat: use covered query
This commit is contained in:
@@ -15,16 +15,23 @@ module.exports = function (module) {
|
|||||||
if (!key) {
|
if (!key) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Array.isArray(key)) {
|
if (Array.isArray(key)) {
|
||||||
const data = await module.client.collection('objects').find({ _key: { $in: key } }).toArray();
|
const data = await module.client.collection('objects').find({
|
||||||
var map = {};
|
_key: { $in: key },
|
||||||
|
}, { _id: 0, _key: 1 }).toArray();
|
||||||
|
|
||||||
|
const map = {};
|
||||||
data.forEach(function (item) {
|
data.forEach(function (item) {
|
||||||
map[item._key] = true;
|
map[item._key] = true;
|
||||||
});
|
});
|
||||||
|
|
||||||
return key.map(key => !!map[key]);
|
return key.map(key => !!map[key]);
|
||||||
}
|
}
|
||||||
const item = await module.client.collection('objects').findOne({ _key: key });
|
|
||||||
|
const item = await module.client.collection('objects').findOne({
|
||||||
|
_key: key,
|
||||||
|
}, { _id: 0, _key: 1 });
|
||||||
return item !== undefined && item !== null;
|
return item !== undefined && item !== null;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -74,15 +81,16 @@ module.exports = function (module) {
|
|||||||
if (!key) {
|
if (!key) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var data = { data: value };
|
await module.setObject(key, { data: value });
|
||||||
await module.setObject(key, data);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
module.increment = async function (key) {
|
module.increment = async function (key) {
|
||||||
if (!key) {
|
if (!key) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const result = await module.client.collection('objects').findOneAndUpdate({ _key: key }, { $inc: { data: 1 } }, { returnOriginal: false, upsert: true });
|
const result = await module.client.collection('objects').findOneAndUpdate({
|
||||||
|
_key: key,
|
||||||
|
}, { $inc: { data: 1 } }, { returnOriginal: false, upsert: true });
|
||||||
return result && result.value ? result.value.data : null;
|
return result && result.value ? result.value.data : null;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -428,7 +428,7 @@ module.exports = function (module) {
|
|||||||
count = count !== undefined ? count : 0;
|
count = count !== undefined ? count : 0;
|
||||||
buildLexQuery(query, min, max);
|
buildLexQuery(query, min, max);
|
||||||
|
|
||||||
const data = await module.client.collection('objects').find(query, { projection: { _id: 0, _key: 0, score: 0 } })
|
const data = await module.client.collection('objects').find(query, { projection: { _id: 0, value: 1 } })
|
||||||
.sort({ value: sort })
|
.sort({ value: sort })
|
||||||
.skip(start)
|
.skip(start)
|
||||||
.limit(count === -1 ? 0 : count)
|
.limit(count === -1 ? 0 : count)
|
||||||
|
|||||||
Reference in New Issue
Block a user