Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 找到Mongoose文档,然后按不同的层随机排序?_Javascript_Mongodb_Express_Mongoose - Fatal编程技术网

Javascript 找到Mongoose文档,然后按不同的层随机排序?

Javascript 找到Mongoose文档,然后按不同的层随机排序?,javascript,mongodb,express,mongoose,Javascript,Mongodb,Express,Mongoose,我当前有一个与集合中的文档关联的.find(),它当前正在根据文档的“状态”对文档进行排序,并根据文档最近的状态对文档进行排序。是否可以先按状态对其进行排序,然后在其各自的层内对其进行随机排序 例如,如果我有三层用户:第1层、第2层和第3层。目前,它是按第1层(最近)、第2层(最近)、第3层(最近)排序的。我希望它的排序是:第1层(随机)、第2层(随机)、第3层(随机)。但仍然显示这样的结果:第1层、第2层,然后是第3层。这可能吗 router.get('/users', (req, res)

我当前有一个与集合中的文档关联的.find(),它当前正在根据文档的“状态”对文档进行排序,并根据文档最近的状态对文档进行排序。是否可以先按状态对其进行排序,然后在其各自的层内对其进行随机排序

例如,如果我有三层用户:第1层、第2层和第3层。目前,它是按第1层(最近)、第2层(最近)、第3层(最近)排序的。我希望它的排序是:第1层(随机)、第2层(随机)、第3层(随机)。但仍然显示这样的结果:第1层、第2层,然后是第3层。这可能吗

router.get('/users', (req, res) => {

    const errors = {};

    Users.find().sort({tierStatus: -1, tierStatus: -1, tierStatus: -1})
        .then(users => {
            if (!users) {
                errors.nousers = 'There are no users';
                return res.status(404).json(errors);
            }
            res.json(users);
        })
        .catch(err => res.status(404).json({
            nousers: 'There are no users'
        }));
});

目前在MongoDB中无法生成随机值,因此无法“随机”排序。您可以考虑的唯一操作符是选择随机文档,但不能使用它与<代码> SoTo()/<代码>或<代码> $排序


唯一的解决方案是按确定性字段排序,然后在应用程序逻辑中乱序。

目前无法在MongoDB中生成随机值,因此无法“随机”排序。您可以考虑的唯一操作符是选择随机文档,但不能使用它与<代码> SoTo()/<代码>或<代码> $排序


唯一的解决方案是按确定性字段排序,然后在应用程序逻辑中乱序。

我是否可以使用一个函数来生成一个随机数并循环原始查找中的所有返回值?例如,我没有使用tierStatus:-1进行排序,是否可以在那里添加回调函数?@Buckyx55否,您只能使用内置运算符。我是否可以使用一个函数,生成一个随机数并循环原始查找中的所有返回值?例如,我没有使用tierStatus:-1进行排序,是否可以在那里添加回调函数?@Buckyx55否,您只能使用内置运算符