获取 MongoDB 中的随机文档有许多种方式,但以下是几种常见的方法。
方法一:使用 $sample 操作符
MongoDB 3.2 及以上版本支持使用 $sample 操作符从集合中获取随机文档。$sample 操作符通过使用随机采样算法来获取指定数量的随机文档,然后返回它们作为游标中的单个批次。下面是使用 $sample 操作符的语法:
db.collection.aggregate([{ $sample: { size: 1 } }])
上面的代码将从集合中返回随机的一个文档。
示例一:
假设 users
集合中有以下文档:
{
"_id" : ObjectId("5f1eb6bac236056b8f6e499d"),
"name" : "john",
"age" : 25
}
{
"_id" : ObjectId("5f1eb6c8c236056b8f6e499e"),
"name" : "peter",
"age" : 30
}
{
"_id" : ObjectId("5f1eb6d4c236056b8f6e499f"),
"name" : "jane",
"age" : 35
}
使用以下命令可以从 users
集合中获取一个随机文档:
db.users.aggregate([{ $sample: { size: 1 } }])
输出结果:
{ "_id" : ObjectId("5f1eb6c8c236056b8f6e499e"), "name" : "peter", "age" : 30 }
方法二:使用 $in 和 $rand
另一种获取随机文档的方法是基于 $in
操作符和 $rand
操作符的。 $in
操作符用于在集合中查找文档并返回它们的列表。 $rand
操作符用于生成一个随机数,该数用于选择要返回的文档。以下是使用 $in
和 $rand
操作符的语法:
db.collection.find({_id: { $in: [db.collection.findOne()._id] } })
上面的代码将从集合中返回随机的一个文档。
示例二:
使用以下命令可以从 users
集合中获取一个随机文档:
db.users.find({_id: { $in: [db.users.findOne()._id] } })
输出结果:
{ "_id" : ObjectId("5f1eb6bac236056b8f6e499d"), "name" : "john", "age" : 25 }
通过这两种方式,可以轻松地从 MongoDB 中获取随机文档。如果需要获取多个随机文档,则需要修改示例中的 size
或数组。