我在从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();
之类的东西会有所不同?还有其他想法吗?
谢谢。
答案 0 :(得分:1)
您应该使用一些种子值来初始化您的Random类,数字基于该种子值。我喜欢以下一个:
Random rnd = new Random(Guid.NewGuid().GetHashCode());
希望这有帮助。