首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB中使用C# Linq的随机顶查询

MongoDB中使用C# Linq的随机顶查询
EN

Stack Overflow用户
提问于 2012-06-03 10:41:30
回答 1查看 1.1K关注 0票数 0

我想在MongoDB中使用C#中的Linq随机获取一张记录。这就是我在做的事。

代码语言:javascript
复制
public string RandomWord()
{
    using (Mongo mongo = new Mongo(_mongoConfig.BuildConfiguration()))
    {
        try
        {
            mongo.Connect();
            var db = mongo.GetDatabase(_dbName);
            IMongoCollection<dic_words> collection = db.GetCollection<dic_words>();
            return 
                (from w in collection.Linq()
                where w.word.Length > 2
                orderby Guid.NewGuid()
                select w).Take(1).FirstOrDefault().word;
        }
        catch (Exception)
        {
            throw;
        }
    }
}

这是我遇到的错误

查询太复杂,不能由MongoDB处理。尝试手工构建映射-减少查询或简化查询,并使用Linq到对象。

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2012-06-03 22:59:08

看起来您正在使用FluentMongo --您得到的错误来自于此。

可能导致此错误的候选代码是以下一行:

代码语言:javascript
复制
   orderby Guid.NewGuid()

FluentMongo似乎不支持这一点。这意味着您可能希望使用另一种方法对返回的记录进行随机化。FluentMongo确实支持OrderBy,但是他们的文件只提到了按字段排序的能力。

请注意,从LINQ映射的内容不一定映射到MongoDB查询。有关这一点的一些相关讨论在这个问题和其他许多方面都有。

顺便说一句,关于如何从MongoDB中获取一个随机文档/对象,在SO和mongo用户列表上都有很多讨论。在蒙古族烹饪书中甚至有一个写出来。我建议审查这些问题,以便为您的用例提供可能的解决方案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10869634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档