如何找到一个随机用户的用户名和配置文件img与相同的用户城市位置?我想这样做,如果一个用户发送请求到我的后端我的后端首先得到城市名称的用户谁reqested到后端比我的后端找到一个随机用户与相同的城市名称,并给予该用户的随机用户的用户名与配置文件img我怎么能这样做Nodejs?例如“tinder如果你选择本地按钮比你只会得到的人谁住在你的城市”
const userSchema = new mongoose.Schema({
username: {
type: String,
require: true
},
email: {
type: String,
require: true,
unique: true
},
password: {
type: String,
require: true,
},
profileImg: {
type: String,
default: ''
},
city: {
type: String,
default: ''
}
})
它总是给我没有用户发现与该城市,即使我有两个用户与同一城市
router.get('/random-user', async (req, res) => {
try {
const city = req.query.city;
const count = await User.countDocuments({ city: city });
if (count === 0) {
return res.status(404).json({ error: 'No users found with that city' });
}
const random = Math.floor(Math.random() * count);
const user = await User.findOne({ city: city })
.skip(random)
.select('username profileImg')
.exec();
res.json(user);
} catch (err) {
res.status(500).json({ error: err });
}
});
1条答案
按热度按时间rqcrx0a61#
您可以使用
$match
和$sample
进行聚合,这将根据match
和sample
返回随机数量的文档Playground示例:https://mongoplayground.net/p/PZtrazJGhZw
单击操场左上角的Run(运行),您将看到结果是随机的