首页 文章

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

提问于
浏览
1

除了我之前的问题:mongodb c# select specific field .

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

要求是:

  • 字段可以是任何类型

  • 返回类型为T.

  • 字段可以在子字段内

  • 字段可以在数组项内部 - 在这种情况下,可以选择数组中所有项的特定字段

对于短裤,我正在寻找"select" /点符号功能 . for example:

想要的方法:

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"]

据我所知,使用 projection expression 与lambda对数组中的项目没有好处,我当时想的更多 dot notation 方式 .

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

非常感谢 .

1 回答

  • 1

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

    例如 Persion.Friends.Name

    • 这个链中的哪个元素是数组?

    • 您应该对集合元素应用显式转换(错误的可能位置)

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

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

相关问题