Mongoose获取集合数据(如果存在更新,否则插入

时间:2016-09-16 11:08:01

标签: node.js mongodb express mongoose

我是ExpressJS的mongodb和mongoose的新手。这可能是一个简单的问题,但我没有成功。

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

这是我的架构,以下是我的问题:

我想检查xyz书是否存在

  

如果有书籍

然后我必须更新一本书柜台。

  

,否则

我必须插入新书。

你能帮帮我..

提前致谢:)

1 个答案:

答案 0 :(得分:1)

您需要更新操作 findOneAndUpdate() ,使用 upsert 选项创建文档(如果文档不存在) new 选项如果设置为true,则返回新创建/修改的文档而不是原始文档,以及 $set $inc < / strong>字段更新运算符。

以下示例演示了这一点:

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));
    }
});