Mongodb嵌套数组limt和使用C#排序

时间:2017-04-05 06:41:53

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

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

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

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

我想使用c#mongodb驱动程序

对学生数组和sortBy Marks应用限制

请建议任何方式来做到这一点。

提前致谢

2 个答案:

答案 0 :(得分:0)

使用AsQueryable

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

现在使用这个我能够创建mongodb查询。它适用于我。我得到了必要的结果

答案 1 :(得分:0)

这使用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();