mongodb 没有则插入,有则更新其中某列
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mongodb 没有则插入,有则更新其中某列相关的知识,希望对你有一定的参考价值。
参考技术A 这篇文章主要介绍了MongoDB查询操作限制返回字段的方法,需要的朋友可以参考下映射(projection)声明用来限制所有查询匹配文档的返回字段。projection以文档的形式列举结果集中要包含或者排除的字段。可以指定要包含的字段(例如:{field:1})或者指定要排除的字段(例如:{field:0})。默认_id是包含在结果集合中的,要从结果集中排除_id字段,需要在projection中指定排除_id字段({_id:0})。除了_id字段,不能在一个projection中联合使用包含和排除语意。返回匹配文档的所有字段:如果没有指定projection,find()方法返回所有匹配文档的所有字段。复制代码代码如下:db.inventory.find(type:'food')这个例子将返回inventory集合中type字段的值为"food"的所有文档,返回的文档包含全部字段。返回指定字段和_id字段:一个projection可以明确地指定多个字段。下面的操作中,find()方法返回匹配的所有文档。在结果集中,只有item和qty字段,默认_id字段也是返回的。复制代码代码如下:db.inventory.find(type:'food',item:1,qty:1)仅返回指定字段:可以通过在projection中指定排除_id字段将其从结果中去掉,如下例子所示:复制代码代码如下:db.inventory.find(type:'food',item:1,qty:1,_id:0)返回除排除掉以外的字段:可以使用一个projection排除一个或者一组字段,如下:复制代码代码如下:db.inventory.find(type:'food',type:0)这个操作返回所有type字段值为food的文档,在结果中type字段不返回。数组字段的projection:$elemMatch和$slice运算符是对数组进行projection的唯一途径。Mongoose 如果存在更新则获取集合数据,否则插入
【中文标题】Mongoose 如果存在更新则获取集合数据,否则插入【英文标题】:Mongoose get collection data if present the update otherwise insert 【发布时间】:2016-09-16 11:08:01 【问题描述】:我是 mongodb 和 ExpressJS 的新手。这可能是一个简单的问题,但我没有成功。
var BookCounter = new Schema(
counter: type: Number,,
book: type: String, min: 18
);
这是我的架构,以下是我的问题:
我想检查 xyz 书是否存在
如果有书
那么我必须将图书计数器更新一。
否则
我必须插入新书。
你能帮帮我吗..
提前致谢:)
【问题讨论】:
【参考方案1】:您需要更新操作 findOneAndUpdate()
,如果文档不存在,则使用选项 upsert
和 new
选项如果设置为 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));
);
【讨论】:
以上是关于mongodb 没有则插入,有则更新其中某列的主要内容,如果未能解决你的问题,请参考以下文章