Есть ли способ установить фиксированное ограничение количества документов, которое может быть вставлено посредством объемной вставки в mongodb
с использованием клиента node.js
?Предельное количество вложений mongodb
Я вставляю несколько документов в коллекцию, которая имеет уникальный индекс на fieldA
через объемную вставку. Некоторые из вставок будут разрушаться из-за fieldA
не являясь уникальным, так что я не могу знать, сколько будет вставлен заранее, но я хочу, чтобы ограничить nInserted
так, чтобы сумма этих документов никогда не переходит 5000.
Все, что я могу сделать, это запустить полную вставку, и если nInserted
приносит общее количество выше 5000, я удаляю последние вставленные n
документы, так что общая сумма 5000, но это кажется немного глупым.
Упорядоченная объемная вставка почти права, но я не хочу, чтобы она остановилась на первом конфликте с индексом, но продолжайте движение, если еще есть место (то есть < 5000 всего).
Вот пример того, что я пытаюсь достичь:
db.myCol.count({foo: val}, function(err, count) {
var remaining = 5000 - count;
if (remaining > 0) {
var bulk = db.myCol.initializeUnorderedBulkOp();
toInsert.forEach(function(item) {
bulk.insert(item);
});
// make sure no more than remaining is inserted
bulk.execute(function(err, result) {
// currently, I would just insert all and
// then remove the overflow with another db action
// if nInserted + count > 5000
});
}
});
Итак, вы хотите иметь 5000 записей в коллекции, как только операция массовой завершена? Можете ли вы опубликовать выполненную вами реализацию? – BatScream
@BatScream Я хочу убедиться, что не более 5000 документов определенного типа> 5000 после запуска объемной вставки. Я обновил вопрос, чтобы привести пример. – apen55