使用MongoDB时更改临时文件夹的默认路径

时间:2017-05-22 11:53:24

标签: mongodb

我设置了MongoDB,并尝试在MongoDB上执行聚合函数。

这就是我的尝试:

var ops = [];

db.tt.aggregate([
  { "$unwind": "$src" },
  { "$group": {
    "_id": { "$toLower": "$email" },
    "src": { "$addToSet": "$src" },
    "ids": { "$addToSet": "$_id" }
  }}
],
{
allowDiskUse:true
}).forEach(doc => {
  var id = doc.ids.shift();
  ops = [
    ...ops,
    {
      "deleteMany": {
        "filter": { "_id": { "$in": doc.ids } }
      }
    },
    { 
      "updateOne": { 
        "filter": { "_id": id },
        "update": { 
          "$set": { "email": doc._id },
          "$addToSet": { "src": { "$each": doc.src } }
        }
      }
    },
  ];

  if ( ops.length >= 500 ) {
    db.tt1.bulkWrite(ops);
    ops = [];
  }

});

但问题是allowDiskUse:true创建_tmp文件夹来编写临时文件。现在,我的MongDB数据可用的空间与临时数据不兼容。因此,我想为此目的使用外部存储。有没有办法为流程指定临时存储空间?

1 个答案:

答案 0 :(得分:1)

路径名是固定的,但是你可以为它创建一个符号链接,例如:

cd /var/lib/mongo/
mv _tmp /another-drive/mongo/
ln -s /another-drive/mongo/_tmp

请记住,外部存储可能比内部磁盘慢得多。