我是ExpressJS的mongodb和mongoose的新手。这可能是一个简单的问题,但我没有成功。
var BookCounter = new Schema({
counter: {type: Number,},
book: {type: String, min: 18}
});
这是我的架构,以下是我的问题:
我想检查xyz书是否存在
如果有书籍
然后我必须更新一本书柜台。
,否则
我必须插入新书。
你能帮帮我..
提前致谢:)
答案 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));
}
});