MongoDB随机导致C#LINQ

Poe*_*HaH 6 c# linq mongodb

我正在使用MongoDB的linq驱动程序从数据库中获取结果

mymongocollection.AsQueryable().Where(x => x.Type == 1);
Run Code Online (Sandbox Code Playgroud)

现在我想从上面返回20个随机记录.我一直在寻找,但我找不到用LINQ做这个的正确方法.我不想在内存中,而是在数据库上.我发现你可以使用MongoDB的$sample聚合,但我不知道如何将它转换成LINQ(如果它甚至可能).

use*_*814 9

我猜你正在使用不正确的命名空间,如使用System.Linq;,它提供访问权限IQueryable.

您应该使用using MongoDB.Driver.Linq;哪个将提供对MongoQueryable具有sample聚合的实现的访问权限

您可以在2.4.0驱动程序版本中尝试以下聚合.

using MongoDB.Driver.Linq; 
collection.AsQueryable().Where(x => x.Type == 1).Sample(20); 
Run Code Online (Sandbox Code Playgroud)

它输出

{aggregate([{ "$match" : { "Type" : 1 } }, { "$sample" : { "size" : NumberLong(20) } }])}
Run Code Online (Sandbox Code Playgroud)

参考这里

https://jira.mongodb.org/browse/CSHARP-1773

https://jira.mongodb.org/browse/CSHARP-1366