Надеюсь, я правильно понял вашу структуру и требования. если нет, дайте мне знать, и я исправлю свой ответ соответственно. Вы можете легко получить доступ к информации о клиенте с помощью интерфейса mongodb c# драйвера AsQueryable
, например:
var collection = new MongoClient("mongodb://localhost")
.GetDatabase("test")
.GetCollection<Customer>("customers");
var result = collection.AsQueryable()
.Select(c => c.Items[0].Source.CustomerInfo)
.ToArray();
. Вот строго типизированная тестовая программа:
using MongoDB.Entities;
using MongoDB.Entities.Core;
using System;
using System.Linq;
namespace StackOverFlow
{
public class Customer : Entity
{
public Item[] Items { get; set; }
}
public class Item
{
public Source Source { get; set; }
}
public class Source
{
public CustomerInfo CustomerInfo { get; set; }
}
public class CustomerInfo
{
public string CustomerID { get; set; }
public string CustomerName { get; set; }
}
public static class Program
{
private static void Main()
{
new DB("test");
var customer = new Customer
{
Items = new[]
{
new Item
{
Source = new Source {
CustomerInfo = new CustomerInfo
{
CustomerID = "xxxxxxx",
CustomerName = "customer one"
}
}
}
}
};
customer.Save();
var result = DB.Queryable<Customer>()
.Select(c => c.Items[0].Source.CustomerInfo)
.ToArray();
foreach (var info in result)
{
Console.WriteLine($"id: {info.CustomerName} / name: {info.CustomerName}");
}
Console.ReadKey();
}
}
}
выше тестовая программа использует мою библиотеку MongoDB.Entities для краткости. если вы поражены многословием официального водителя, вы можете проверить мою библиотеку.