mongodb c选择特定的字段点表示法

本文关键字:字段 表示 选择 mongodb | 更新日期: 2023-09-27 18:00:35

除了我之前的问题:mongodb c#选择特定字段。

我正在编写一个用于选择特定字段的通用方法。

要求是:

  1. 字段可以是任何类型
  2. 返回类型为T
  3. 字段可以位于子字段内
  4. 字段可以在数组项内-在这种情况下,可以选择数组中所有项的特定字段

简而言之,我正在寻找"选择"/点号功能。例如:

想要的方法:

T GetFieldValue<T>(string id, string fieldName)

文件:

persons
{
  "id": "avi"
  "Freinds" : [
    {
      "Name" : "joni",
      "age" : "33"
    },
    {
      "Name" : "daniel",
      "age" : "27"
    }]
}

目标是这样调用方法:

string[] myFriends = GetFieldValue<string[]>("avi", "Freinds.Name");
myFriends == ["joni","daniel"]

据我所知,将投影表达式与lambda一起使用对数组中的项没有好处,我在想更多的点符号方式。

注意:我正在使用新的c#驱动程序(2.0)

非常感谢。

mongodb c选择特定的字段点表示法

我看不出在字符串中使用don表示法的好方法,因为它在集合方面比一般方法有更多的问题:

例如Persion.Friends.Name

  1. 哪个元素是这个链中的数组
  2. 您应该对集合元素应用显式转换(可能的错误位置)

通用方法在支持和使用方面更可靠:

var friends = await GetFieldValue<Person, Friend[]>("avi", x => x.Friends);
var names = friends.Select(x=>x.Name).ToArray();