У меня есть массив объектов, которые я хотел бы вставить в коллекцию MongoDB, однако я бы хотел проверить, есть ли каждый элемент уже в коллекции. Если он не существует, вставьте его, если он существует, а затем не вставляйте его.Умножить массив элементов с помощью MongoDB
После некоторого Googling мне кажется, что лучше всего использовать метод обновления с свойством upsert, установленным в true.
Это похоже на работу, если я передам ему один элемент, а также, если я перебираю массив и вставляю элементы по одному, однако я не уверен, правильно ли это делается , или если это наиболее эффективно. Вот что я делаю в данный момент:
var data = [{}, {}, ... {}];
for (var i = 0; i < data.length; i++) {
var item = data[i];
collection.update(
{userId: item.id},
{$setOnInsert: item},
{upsert: true},
function(err, result) {
if (err) {
// Handle errors here
}
});
}
итерация над моим массивом и вставляя их один за другим наиболее эффективный способ сделать это, или есть способ лучше?
Отлично, это именно то, что мне нужно. Я начал, пытаясь вставить весь массив, который не удался и остановился, когда он столкнулся с дубликатом, поэтому я подумал, что мне, возможно, придется это сделать так, как я изложил в вопросе. Я не знал, что вы можете использовать неупорядоченную вставку для продолжения вставки, даже если некоторые из вставок терпят неудачу. Благодаря! – joshfarrant