【问题标题】:Mongoose .populate randomMongoose .populate 随机
【发布时间】:2018-09-10 16:07:49
【问题描述】:

可以“随机填充”吗?

示例

.populate({
    path: 'path',
    options: {limit: 2}
});  

“示例” 总是返回相同的 2 个项目。始终是数组中的最后 2 项。
是否可以使用.populate() 返回随机项目?怎么制作?

【问题讨论】:

    标签: javascript mongoose populate mongoose-populate


    【解决方案1】:

    用户javascript'Math.randomMath.floor

    random() 方法返回一个随机数,从 0(含)到 但不包括 1(独占)。

    更多细节和例子:https://www.w3schools.com/js/js_random.asp

    所以在120 之间有一个随机限制:

    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 返回随机项目?
    猜你喜欢
    • 2012-07-06
    • 1970-01-01
    • 2023-03-30
    • 2018-07-06
    • 2016-02-14
    • 1970-01-01
    • 2013-11-23
    • 2013-12-17
    • 2015-08-16
    相关资源
    最近更新 更多