使用 MongoDb C# 驱动程序示例 () 时遇到困难
Having Difficulty Using MongoDb C# Driver's Sample()
我正在尝试使用 Sample() 方法从数据库中获取一些随机项目。我更新到最新版本的驱动程序并从链接示例中复制了 using 语句。但是,有些东西不起作用,我希望这是我的一些简单错误。所有相关信息都在下图中:
编辑:
Greg,我阅读了聚合文档 here and the raw db method 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);
样本只能从聚合中获得。您需要从聚合开始,而不是查找。我相信它在 Linq 中也可用。
更新:
看起来我们没有专门的方法。但是,您可以使用 AppendStage 方法。
mongoCollection.Aggregate(sampleFilter)
.AppendStage<BsonDocument>("{ $sample: { size: 3 } }");
我正在尝试使用 Sample() 方法从数据库中获取一些随机项目。我更新到最新版本的驱动程序并从链接示例中复制了 using 语句。但是,有些东西不起作用,我希望这是我的一些简单错误。所有相关信息都在下图中:
编辑:
Greg,我阅读了聚合文档 here and the raw db method 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);
样本只能从聚合中获得。您需要从聚合开始,而不是查找。我相信它在 Linq 中也可用。
更新: 看起来我们没有专门的方法。但是,您可以使用 AppendStage 方法。
mongoCollection.Aggregate(sampleFilter)
.AppendStage<BsonDocument>("{ $sample: { size: 3 } }");