Heim > Fragen und Antworten > Hauptteil
Zum Beispiel habe ich eine Tag-Tabelle in Mongo und das Datenmodell ist wie folgt
{
name: String,
hot: {
type: Number,
default: 0
},
create_at: {
type: Date,
default: Date.now
}
}
Jetzt habe ich eine Reihe von Tag-Namen, wie zum Beispiel ['mongoDB', 'node.js', 'mysql'],
Ich möchte die Beliebtheit stapelweise aktualisieren, und wenn sich herausstellt, dass es kein solches Tag gibt, Fügen Sie es ein, implementieren Sie so etwas wie
mongo.tags.update({
name:{
$in:['mongoDB','node.js','mysql']
}
},{
$inc:{
hot:1
}
},{
upsert: true,
multi:true
})
So eine Operation, aber jetzt, wenn ich diesen Befehl ausführe, werden leere Daten hinzugefügt
Die Art und Weise, wie ich sie jetzt umsetze, besteht darin, zuerst eine Abfrage durchzuführen und diejenigen zu aktualisieren, die abgefragt werden können, und diejenigen einzufügen, die abgefragt werden können Der Vorgang kann nicht abgefragt werden, aber ein solcher Vorgang erfordert das mehrfache Durchlaufen des Tag-Arrays vom Code aus, und die Leistung ist nicht gut. Ich würde gerne fragen, ob Experten eine bessere Lösung haben.
ringa_lee2017-05-24 11:37:41
1、您的update operation的语句没问题;
2、您所说的新增一个空的数据,是因为没有查找到满足条件的document,并且设置upsert为true,所以插入了一个包含feild hot的document。
不妨检查一下自己的collection的document情形,再试试。您的update operation没有发现问题。
供参考。
Love MongoDB! Have fun!
2017MongoDB中文社区北京用户组大会在即!扫码报名中!
某草草2017-05-24 11:37:41
mongodb里面用upsert应该可以实现
upsert({},{},true) true表示没有就写入,有就更新;
可以参考官方支持萌阔论坛:
http://forum.foxera.com/mongo...