MongoDB的push和root的C#等效项是什么?

Hohohodown

我有一群人。我正在尝试为每个名字找到年龄最大的人。我可以使用mongoDB控制台命令达到该结果

db.People.aggregate([
    { '$sort': { 'Name': 1, 'Age': -1 } }, 
    {       
        '$group': {
            '_id': '$Name',
            'docs': { '$push': '$$ROOT' },
        }
    },
    {
        '$project': {
            'top_one': { 
                '$slice': ['$docs', 1]
            }
        }
    } ])

对于C#驱动程序,这等效于什么?我特别有麻烦

'docs': { '$push': '$$ROOT' },

这是我当前的C#查询:

collection.Aggregate(aggArgs)
   .SortByDescending(x => x.Age) 
   .Group(x => x.Name, x => new { 
       Name = x.First().Name, 
       FavoriteColor = x.First().FavoriteColor, 
       FavoriteFood = x.First().FavoriteFood
    }).ToListAsync().Result;

它的工作接近我的mongo console命令,但我真的不喜欢构造匿名对象。我更愿意这样做Group(x => x.Name,x => x.First()),但是会抛出和不支持“ First()”的异常。我相信部分问题是我的Person类型没有ID,因此_id放在实际的mongo文档中(插入时由mongo自动执行)。当它尝试返回到类型时,它无法进行直接映射。

因此,考虑到两个版本的查询,如何在不用拼写每个字段的情况下将我的完整类型恢复为C#?

马克西姆·辛金

这是MongoDB驱动程序的功能。它不接受简单的First(),它后面需要一些东西。那是我通过调试看到的。因此,您应该继续使用First()...或直接查询json:

var result = collection.Aggregate()                
        .Group(new JsonProjectionDefinition<People>(@" {
              '_id': '$Name',
               'docs': { '$push': '$$ROOT' },}"))
        .Project<TopOne>(new JsonProjectionDefinition<BsonDocument>(@"{
            'top_one': { 
            '$slice': ['$docs', 1]
        } }"))
       .ToList();

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Java的Locale.ROOT和Locale.getDefault()的C#等效项是什么?

朋友的C#等效项是什么?

C#的C ++ DWORD等效项是什么?

C ++中<map>的C#等效项是什么?

C#中的Spliterator等效项是什么?

Java中Calendar的C#等效项是什么?

java.util.regex的C#等效项是什么?

Java的getClass(),isAssignableFrom()等的c#等效项是什么?

Java DecimalFormat的c#等效项是什么?

Java中的静态{...}的c#等效项是什么?

JSON:C#中的Java Map等效项是什么

C#中的Java BigDecimal类的等效项是什么?

给定的C#哈希代码的OpenSSL等效项是什么?

Java CharSequence类型的C#等效项是什么?

C#中Java的SimpleDateFormat类的等效项是什么?

此Java行的C#等效项是什么?

C#命名参数的F#等效项是什么?

memcpy数组与int的C#等效项是什么?

C#中unsigned long int的等效项是什么?

python的map()的C等效项是什么

python的import as的C ++等效项是什么?

C#的HttpServerUtility.UrlTokenDecode与Objective-C的等效项是什么?

C#中'const'关键字的C ++ / CLI等效项是什么?

什么是Java SecretKeySpec的C#等效项

什么是C#中的DefaultAWSCredentialsProviderChain等效项

C#通用约束“ T,K:其中T:It <K>”的Java等效项是什么?

C#ʻInterlocked.Exchange(Object,Object):Object`的Java等效项是什么?

在C#中,带有lambdas的Enumerable.Select的Java等效项是什么?

Java 8 java.util.function.Consumer <>的c#等效项是什么?