mongo中如何批量更新一组数据,当数组中的数据不存在的时候进行插入操作?
发布于 7 年前 作者 mane115 7324 次浏览 来自 问答

例如我在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
})

这样的操作,但是现在我执行这个命令的时候都是新增了一个空的数据 image.png 现在我实现的方法就是先做一次查询,能查询到的更新,不能查询到的进行插入操作,但是这样的操作需要从代码中遍历多次标签数组,性能不好,想请教下各位大牛有没有更好的解决方法。

2 回复

只能先查询,后 insert。 给 name 设个索引查询起来会快一些。

回到顶部