在C#中获取随机mongo数据库记录

本文关键字:mongo 数据库 记录 随机 获取 | 更新日期: 2023-09-27 18:27:21

我在从mongoDB获取数据时遇到了一个问题,但这种情况并非每次都发生(很难跟踪)。情况如下:

我正试图通过这样做从mongo收集中获得随机数据:

var database = MongoClientWrapper.GetDb();
var coll = database.GetCollection<CollectionName>("CollectionName");
var collCount = (int)coll.Count();
var rnd = Helper.Getrandom.Next(0, collCount);
var sgs = coll.FindOneAs<CollectionName>(Query<CollectionName>.EQ( s => s.Id, rnd));
if (sgs == null) return null;
return sgs;

这是在一个循环中调用的函数中,我必须获得15-20个项目的信息。它在大多数情况下都有效,但有时它会为循环的15个元素返回相同的记录(我不相信巧合)。你认为函数开头的var sgs = new CollectionName();会有所不同吗?还有其他想法吗?

谢谢。

在C#中获取随机mongo数据库记录

您应该用一些种子值作为Random类的初始值,该值是数字的基础。我喜欢下面这个:

Random rnd = new Random(Guid.NewGuid().GetHashCode());

希望这能有所帮助。