2016-09-16 2 views
0

Я новичок в mongodb и mongoose с ExpressJS. Это может быть простой вопрос, но я не уверен.Mongoose получить данные сбора, если присутствует обновление, иначе вставить

var BookCounter = new Schema({ 
    counter: {type: Number,}, 
    book: {type: String, min: 18} 
}); 

это моя схема и следующий будет мой вопрос:

Я хочу, чтобы проверить, что хуг книга присутствует или нет

если книга присутствует

Затем мне нужно обновить счетчик книг на один.

иначе

я должен вставить новую книгу.

Можете ли вы мне помочь ..

Заранее спасибо :)

ответ

1

Вам нужна операция обновления findOneAndUpdate(), который использует параметры upsert создать документ, если он не существует и Опция, если установлено значение true, возвращает вновь созданный/измененный документ, а не оригинал, рядом с $set и $inc поле обновления операторов.

Следующий пример демонстрирует это:

var query = { "book": "xyz" }, 
    update = { "$inc": { "counter": 1 } }, 
    options = { "upsert": true, "new": true }; 

// Find the document 
Book.findOneAndUpdate(query, update, options, function(err, result) { 
    if (err) handleError(err);  
    else { 
     // do something with the document 
     console.log(JSON.stringify(result, null, 4)); 
    } 
}); 
+1

Спасибо это работает :) – VRK

Смежные вопросы