Я использую monk npm , чтобы объяснить запрос в мангусте.
const mongoose = require('mongoose');
mongoose.set('debug', function(collection, method, query, doc) {
if (method === 'ensureIndex') return;
console.log('');
console.log('=== Mongoose query ===');
console.log('');
console.log(collection, method, query, doc);
var explainDoc = Object.create(doc);
explainDoc.explain = true;
const db = monk.get(collection, { castIds: false });
db[method](query, explainDoc, function(err, doc) {
if (err) return console.err(err);
console.dir(doc, { depth: null, colors: true });
})
});
, но выдает ошибку, такую как
Ошибка типа: db [метод] не является функцией
с методом findAndModify .В противном случае, метод update , findOne кажется, объясните запрос нормально !.
Журнал с моей консоли
=== Mongoose query ===
categories findOne { _id: '64824C9DC59340928A01F6338A2F6453' } { fields: {} }
=== Mongoose query ===
categories update { _id: '64824C9DC59340928A01F6338A2F6453' } { '$set': { updateAt: 2018-09-27T02:58:59.906Z } }
{ queryPlanner:
{ plannerVersion: 1,
namespace: 'xxxxx.categories',
indexFilterSet: false,
parsedQuery: { _id: { '$eq': '64824C9DC59340928A01F6338A2F6453' } },
winningPlan: { stage: 'IDHACK' },
rejectedPlans: [] },
executionStats:
{ executionSuccess: true,
nReturned: 1,
executionTimeMillis: 0,
totalKeysExamined: 1,
totalDocsExamined: 1,
executionStages:
{ stage: 'IDHACK',
nReturned: 1,
executionTimeMillisEstimate: 0,
works: 2,
advanced: 1,
needTime: 0,
needYield: 0,
saveState: 0,
restoreState: 0,
isEOF: 1,
invalidates: 0,
keysExamined: 1,
docsExamined: 1 },
allPlansExecution: [] },
ok: 1 }
=== Mongoose query ===
categories findAndModify { parent: '64824C9DC59340928A01F6338A2F6453' } []
/Volumes/Data/Loint/XXXX/product/ml-sync-revo/dist/model/category.js:54
db[method](query, explainDoc, function(err, doc) {
^
TypeError: db[method] is not a function
Итак, мой вопрос:
- Как объяснить каждый запрос на монго с использованием monk?
- monkПохоже, просто определить индекс попадания в запросе, чтобы оценить производительность запроса, в другом сложном решении, есть ли решение для оптимизации производительности запроса (бенчмарк, ... бла-бла ..)