Mongoose .populate 随机
Posted
技术标签:
【中文标题】Mongoose .populate 随机【英文标题】:Mongoose .populate random 【发布时间】:2018-09-10 16:07:49 【问题描述】:可以“随机填充”吗?
示例
.populate(
path: 'path',
options: limit: 2
);
“示例” 总是返回相同的 2 个项目。始终是数组中的最后 2 项。
是否可以使用.populate()
返回随机项目?怎么制作?
【问题讨论】:
【参考方案1】:用户javascript
'Math.random
和Math.floor
random() 方法返回一个随机数,从 0(含)到 但不包括 1(独占)。
更多细节和例子:https://www.w3schools.com/js/js_random.asp
所以在1
和20
之间有一个随机限制:
var myLimit = Math.floor(Math.random() * (20 - 1) + 1);
.populate(
path: 'path',
options: limit: myLimit
);
编辑
如果你想每次返回2
随机项目,使用skip
:
var myRandom = Math.floor(Math.random() * (20 - 1) + 1);
.populate(
path: 'path',
options: limit: 2, skip:myRandom
);
但这会在第一个 20
中选择两个随机记录,更准确地说,您需要计算所有记录,然后生成一个介于 1 和该计数之间的随机数:
yourModel.count(, function( err, count)
var myRandom = Math.floor(Math.random() * (count - 1) + 1);
// your old code ..
.populate(
path: 'path',
options: limit: 2, skip:myRandom
);
)
【讨论】:
对不起,我不想更改限制,我希望它是 2,问题是它总是只返回相同的 2 项 我想做一些像 $sample 这样的东西,它总是返回随机项目。是否可以使用 populate 返回随机项目?以上是关于Mongoose .populate 随机的主要内容,如果未能解决你的问题,请参考以下文章
Populate Virtuals似乎不起作用。谁能告诉我这个错误?