问题描述
例如我在mongo有一个标签表,数据模型如下
{name: String,hot: { type: Number, default: 0},create_at: { type: Date, default: Date.now} }
现在我有一个数组的标签名,例如[’mongoDB’,’node.js’,’mysql’],我想批量更新热度,如果发现没有这个标签的时候插入,实现像
mongo.tags.update({ name:{$in:[’mongoDB’,’node.js’,’mysql’]}},{ $inc:{hot:1 }},{ upsert: true, multi:true})
这样的操作,但是现在我执行这个命令的时候都是新增了一个空的数据现在我实现的方法就是先做一次查询,能查询到的更新,不能查询到的进行插入操作,但是这样的操作需要从代码中遍历多次标签数组,性能不好,想请教下各位大牛有没有更好的解决方法。
问题解答
回答1:1、您的update operation的语句没问题;
2、您所说的新增一个空的数据,是因为没有查找到满足条件的document,并且设置upsert为true,所以插入了一个包含feild hot的document。
不妨检查一下自己的collection的document情形,再试试。您的update operation没有发现问题。
供参考。
Love MongoDB! Have fun!
2017MongoDB中文社区北京用户组大会在即!扫码报名中!
回答2:mongodb里面用upsert应该可以实现upsert({},{},true) true表示没有就写入,有就更新;可以参考官方支持萌阔论坛:http://forum.foxera.com/mongo...