MongoDb findAndModify问题

时间:2016-02-10 08:18:58

标签: node.js mongodb

我刚刚遇到了一个有趣的问题,我的findAndModify查询,我有一个应用程序,每秒接收大约2000-3000个请求,每个请求都有一个“令牌”参数。

示例请求为:http://localhost:3000/manifest?token=my-token&adType=TableView

当我收到请求时,我会查找令牌,如果它存在,我会更新“timeUpdated”字段,否则我会将其插入我的“令牌”集合中。

这是我使用的查询(我有一个“宣传”mongo查询的商店库):

store.findAndModify(
          'token', 
          queryEntity,
          {
            _id: 1
          },
          {
            $setOnInsert: {
              token: tokenName,
              inventory: [],
              status: 'LIVE',
              time_created: now
            },
            $set:{
              'time_updated': now,
              'category': tokenCategory
            },
            $addToSet:{
              'ad_types': adType
            }
          }
        ).then(function (token) {
          // do something with token
        })
        .fail(function (err) { //handle errors });

一切都很好。然而,昨天我们收到了一个意外的请求峰值,我的findAndModify查询在mongo日志中显示为缓慢的操作,并开始瓶颈其他查询导致超时。 我的查询有问题吗?我能以任何方式优化它吗?

0 个答案:

没有答案