Предположим, следуя схеме
var schema = new mongoose.Schema({
data: { type: [Number] }
});
schema.index({ _id: 1, data: 1 });
var model = mongoose.model('Test', schema);
Насколько эффективна $pull
оператор при удалении записей из doc.data
?
model.update({ _id: someId }, { $pull: { data: { $lte: 123 } } }).exec();
Будет ли он использовать индекс и запустить в O (журнал N + M) сложность, где п число элементов в данных и т число удаленных элементов? Или он должен сканировать весь массив?
И какова сложность удаления элемента после того, как Монго нашел его? Является ли O (1), O (log n) или O (n), поскольку он должен сдвигать другие элементы?