我正在使用MongoDB的linq驱动程序从数据库中获取结果
mymongocollection.AsQueryable().Where(x => x.Type == 1);
Run Code Online (Sandbox Code Playgroud)
现在我想从上面返回20个随机记录.我一直在寻找,但我找不到用LINQ做这个的正确方法.我不想在内存中,而是在数据库上.我发现你可以使用MongoDB的$sample聚合,但我不知道如何将它转换成LINQ(如果它甚至可能).
我猜你正在使用不正确的命名空间,如使用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
| 归档时间: |
|
| 查看次数: |
947 次 |
| 最近记录: |