【问题标题】:Mongodb Nested array limt and sort using C#Mongodb嵌套数组限制和排序使用C#
【发布时间】:2017-04-05 06:41:53
【问题描述】:

嗨,我是 mongodb 的新手。我有一个像这里这样的文件

  {
    "_id" : "58e46f81c4734559ac8082f0",
    "Name" : "test",
    "Students" : [ 
        {

            "Name" : "A",
            "Marks" : "3"
         }
                  ]
    }

我想使用 c# mongodb Drivers 对学生数组和 sortBy Marks 应用限制

请提出任何方法来做到这一点。

提前致谢

【问题讨论】:

    标签: c# mongodb sorting limit mongodb-.net-driver


    【解决方案1】:

    这使用 MongoDB.Driver 2.4 版:

    var context = new Context();
    var builder = Builders<Thing>.Filter;
    var filter = builder.Eq(x => x.Name, "test"); // Or by Id, etc.
    var result = context.ThingCollection.Find(filter).SingleOrDefault();
    var students = result.Students.OrderByDescending(x => x.Marks).Take(limit).ToList();
    

    students 变量是按分数排序的有限学生列表。

    更新

    这也有效:

    var result = context.ThingCollection.Find(filter).Project(x => x.Students.Select(y => y).OrderByDescending(z => z.Marks).Take(3)).ToList();
    

    【讨论】:

    • 它在内存处理中。我想要只从数据库中获取所需数据的查询。不希望对结果进行任何内存处理
    • 对,我只想要嵌套数组的一部分
    【解决方案2】:

    使用 AsQueryable

    collection.AsQueryable().Where(predict).SelectMany(Property).OrderByDescending().Take(number)

    现在使用它我可以创建 mongodb 查询。它对我有用。我得到了要求的结果

    【讨论】:

    • 预测是什么?还是财产?恭喜你,你可能获得了最差答案奖!!
    • @Cemal 我不认为您在 .net 中使用过 mongodb 和 linq。 predict 将是 ex- 的 where 条件:collection.AsQueryable().Where(i=>i.id==10) 和属性或对象想要进入查询结果,如名称等
    • 这不是关于我本身的理解,而是关于回答 SO 的指导方针。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-10
    • 2020-08-08
    • 2021-12-23
    相关资源
    最近更新 更多