我设置了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数据可用的空间与临时数据不兼容。因此,我想为此目的使用外部存储。有没有办法为流程指定临时存储空间?
答案 0 :(得分:1)
路径名是固定的,但是你可以为它创建一个符号链接,例如:
cd /var/lib/mongo/
mv _tmp /another-drive/mongo/
ln -s /another-drive/mongo/_tmp
请记住,外部存储可能比内部磁盘慢得多。