我想在我的电子邮件中添加动态内容,其中一部分是项目集(例如书籍列表).我希望Mandrill一次渲染这些项目(例如每本书一个表格行).有可能以某种方式在Mandrill中使用for循环吗?
分配策略 usePowerOf2Sizes 似乎对集合的填充因子没有影响。是否有我缺少的东西或这是一个错误?有没有一个示例说明usePowerOf2Sizes对填充因子的影响?
我已经尝试了以下实验:
我希望对于精确匹配分配策略而言,此集合的填充因子将小于2个大小分配策略的幂。
但是,无论使用哪种分配策略,我真正观察到的都是相同的填充因子。
这是我使用的代码(适用于mongo 2.6.4版):
function randomChoice(arr) {
return arr[getRandomInt(0, arr.length)]
}
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min)) + min;
}
function prepare(count, usePowerOf2Sizes) {
db.aaa.drop();
db.aaa.createIndex({"i": 1})
for (var i=0; i<count; i++) {
db.aaa.insert({"i": i});
}
db.runCommand({"collMod": "aaa", "usePowerOf2Sizes" : usePowerOf2Sizes })
}
function changeSizes(actionCount) {
vals = [100, 150, 225, 340, 500, 760, 1200].map(function (n) {return Array(n + 1).join("a")})
count = db.aaa.count()
for (var i=0; i<actionCount; i++) …Run Code Online (Sandbox Code Playgroud)好吧,可能这应该从文档中清楚地看出,遗憾的是,情况并非如此。我的猜测是,该压缩文件会对集合进行某种碎片整理 - 这样集合的 paddingfactor 就会低于给定的值。然而,这似乎不是真的:
> db.aaa.stats().paddingFactor
1.9980000000000002
> db.runCommand ( { compact: 'aaa', paddingFactor: 1.1 } )
{ "ok" : 1 }
> db.aaa.stats().paddingFactor
1.9980000000000002
> db.runCommand ( { compact: 'aaa', paddingFactor: 3 } )
{ "ok" : 1 }
> db.aaa.stats().paddingFactor
1.9980000000000002
Run Code Online (Sandbox Code Playgroud)
如果这不是更改集合填充因子的方法,是否还有其他方法可以这样做?