MongoDB $rand 运算符介绍
$rand
运算符是 Mongodb 中的一个内置运算符,用于生成一个[0,1)之间的随机数。它可以用在聚合管道中,例如在$project或$addFields 阶段中。通过使用 $rand
运算符,我们可以生成随机值并将其存储在文档中或进行其他操作。
语法
$rand
运算符的语法如下:
{ $rand: <seed> }
其中,<seed>
是一个可选参数,可以是任何整数值。如果指定了<seed>
,则每次使用 $rand
运算符时,都会生成相同的随机数序列。如果没有指定<seed>
,则使用 Mongodb 系统时间作为默认种子。
使用场景
$rand
运算符通常用于以下场景:
- 生成随机值并存储在文档中,以用于后续的计算或查询。
- 在
$sample
阶段中,随机选择文档样本。 - 生成随机排序的结果。
示例
示例 1:生成随机值并存储在文档中
假设我们有一个包含产品价格的集合,现在我们想要为每个产品添加一个名为“discount”的字段,其值为产品价格的 10%到 20%之间的随机数。我们可以使用以下聚合管道来实现:
db.products.aggregate([
{ $addFields: { discount: { $multiply: [{ $rand: {} }, 0.1] } } }
])
在上面的示例中,我们使用 $rand
运算符来生成一个随机数,然后将其乘以 0.1,得到 10%到 20%之间的随机数,并将其存储在名为“discount”的字段中。
示例 2:随机排序结果
假设我们有一个包含学生成绩的集合,现在我们想要随机排序学生成绩。我们可以使用以下聚合管道来实现:
db.scores.aggregate([
{ $addFields: { random: { $rand: {} } } },
{ $sort: { random: 1 } },
{ $project: { random: 0 } }
])
在上面的示例中,我们使用 $rand
运算符为每个文档生成一个随机数,并将其存储在名为 random
的字段中。然后,我们使用 $sort
阶段按照 random
字段进行升序排序,从而实现了随机排序的效果。最后,我们使用 $project 阶段将 random
字段从结果中排除掉。
结论
$rand
运算符是一个非常有用的 Mongodb 内置运算符,可以用于生成随机数、随机排序结果等多种场景。我们可以使用 $rand
运算符在聚合管道中生成