难以使用MongoDb C#Driver的样本()

时间:2016-03-14 14:48:47

标签: mongodb mongodb-.net-driver

我正在尝试使用Sample()方法从数据库中获取一些随机项。我更新到驱动程序的最新版本并复制了链接示例中的using语句。但是,有些东西不起作用,我希望这是我的一些简单错误。所有相关信息如下图所示:

enter image description here

编辑:

Greg,我读了聚合文档here和原始db方法doc here,但我仍然没有得到它。最后两行是我的尝试,我之前从未使用过聚合:

            var mongoCollection = GetMongoCollection<BsonDocument>(collectionName);
            long[] locationIds = new long[] { 1, 2, 3, 4, 5 };
            var locationsArray = new BsonArray();
            foreach (long l in locationIds) { locationsArray.Add(l); };
            FilterDefinition<BsonDocument> sampleFilter = Builders<BsonDocument>.Filter.In("LocationId", locationsArray);
            var findSomething = mongoCollection.Find(sampleFilter); //this works, the two attempts below don't.
            var aggregateSomething = mongoCollection.Aggregate(sampleFilter).Sample(25);
            var aggregateSomething2 = mongoCollection.Aggregate().Match(sampleFilter).Sample(25);

1 个答案:

答案 0 :(得分:4)

样本仅可从聚合中获得。您需要从Aggregate开始,而不是Find。我相信它也可以在Linq中使用。

更新: 看起来我们没有具体的方法。但是,您可以使用AppendStage方法。

mongoCollection.Aggregate(sampleFilter)
               .AppendStage<BsonDocument>("{ $sample: { size: 3 } }");