For example, I have a tag table in mongo, and the data model is as follows
{
name: String,
hot: {
type: Number,
default: 0
},
create_at: {
type: Date,
default: Date.now
}
}
Now I have an array of tag names, such as ['mongoDB','node.js','mysql'],
I want to update the popularity in batches, and if it is found that there is no such tag, insert it, implement something like
mongo.tags.update({
name:{
$in:['mongoDB','node.js','mysql']
}
},{
$inc:{
hot:1
}
},{
upsert: true,
multi:true
})
Such an operation, but now when I execute this command, an empty data is added
The way I implement it now is to do a query first, Updates that can be queried can be queried, and insertion operations cannot be performed. However, such an operation requires traversing the tag array multiple times from the code, and the performance is not good. I would like to ask if any experts have a better solution.
ringa_lee2017-05-24 11:37:41
1. Your update operation statement is OK;
2. What you said about adding an empty data is because no document that meets the conditions was found and upsert was set to true, so a document containing feild hot was inserted.
You might as well check the document status of your collection and try again. No problem was found in your update operation.
For reference.
Love MongoDB! Have fun!
The 2017 MongoDB Chinese Community Beijing User Group Conference is coming soon! Scan the QR code to register!
某草草2017-05-24 11:37:41
It should be possible to use upsert in mongodb
upsert({},{},true) true means write if there is no, and update if there is;
You can refer to the official support forum:
http://forum.foxera.com/ mongo...