在C#中获取随机mongo DB记录

时间:2015-12-18 10:26:37

标签: c# .net mongodb random

我在从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();之类的东西会有所不同?还有其他想法吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

您应该使用一些种子值来初始化您的Random类,数字基于该种子值。我喜欢以下一个:

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

希望这有帮助。