tom*_*him 15 mongoose mongodb express
我正在使用MongoDB和Mongoose与Express来存储我通过Twitter API检索的推文.
我想避免保存重复的推文.我正在做这样的事情:
TweetsModel.find({tweet_id: tweet.tweet_id}, function (err, tweets) {
if(tweets.length > 0){
cb('Tweet already exists',null);
} else{
tweet.save(function(err){
cb(err,user);
});
}
});
Run Code Online (Sandbox Code Playgroud)
我的问题是:出于性能原因,有没有办法使用Mongoose来避免做两个请求?一个找到一个保存?
知道我不想更新推文,如果它已经存在.
谢谢
Joh*_*yHK 22
您可以使用update带upsert选项的调用来执行此操作:
TweetsModel.update(
{tweet_id: tweet.tweet_id},
{$setOnInsert: tweet},
{upsert: true},
function(err, numAffected) { .. }
);
Run Code Online (Sandbox Code Playgroud)
如果已存在包含该推文ID的文档,那么这是一个无操作.否则它将添加文档.
$setOnInsert需要v2.4 +的MongoDB.如果您的版本低于2.4,事情会变得更复杂.
| 归档时间: |
|
| 查看次数: |
10097 次 |
| 最近记录: |