MongoDB запрашивает массив встроенных документов через C # - PullRequest
0 голосов
/ 08 марта 2019

Есть документ, в котором расположены меню навигации и пункты меню. Я не получил ничего от запросов, которые я использовал. Потому что он всегда приносил все элементы главного меню. Первый метод Find () подходит, но метод Any (), который я создал для внедренного документа, не дает желаемого результата.

public class NavMenu
{
    public string Id { get; set; }
    public string Name { get; set; }
    public bool IsActive { get; set; }
    public AuthList Auths { get; set; }
    public List<NavMenuItems> MenuItems { get; set; }
}

public class AuthList
{
    public bool Program { get; set; }
    public bool Admin { get; set; }
    public bool Moderator { get; set; }
    public bool Member { get; set; }
    public bool AnyBody { get; set; }
}

public class NavMenuItems
{
    public string Id { get; set; }
    public string MenuId { get; set; }
    public string Name { get; set; }
    public string Url { get; set; }
    public bool IsActive { get; set; }
    public AuthList Auths { get; set; }
}
List<NavMenu> menuList = await collection.Find(m =>
                           m.IsActive && m.Auths.Program &&
                           m.MenuItems.Any(i => i.IsActive && i.Auths.Program)).ToListAsync();

Изменить: Приведенный выше запрос приносит мне меню 1 и все пункты меню внутри. Но я хочу Menu1 и его подпункты Пункт меню 1 и Пункт меню 2

List<NavMenu> navMenus = new List<NavMenu>();
        List<NavMenuItems> menuItems = new List<NavMenuItems>();
        menuItems.Add(new NavMenuItems
        {
            Name = "MenuItem 1",
            Auths= new AuthList {Admin = false, AnyBody = false, Member = false, Moderator = false, Program = true},
            IsActive = true,
            MenuId = "1",
            Url = "someUrl"
        });
        menuItems.Add(new NavMenuItems
        {
            Name = "MenuItem 2",
            Auths= new AuthList {Admin = false, AnyBody = false, Member = false, Moderator = false, Program = true},
            IsActive = true,
            MenuId = "1",
            Url = "someUrl"
        });
        menuItems.Add(new NavMenuItems
        {
            Name = "MenuItem 3",
            Auths= new AuthList {Admin = true, AnyBody = false, Member = false, Moderator = false, Program = false},
            IsActive = true,
            MenuId = "1",
            Url = "someUrl"
        });
        menuItems.Add(new NavMenuItems
        {
            Name = "MenuItem 4",
            Auths= new AuthList {Admin = false, AnyBody = false, Member = false, Moderator = false, Program = true},
            IsActive = false,
            MenuId = "1",
            Url = "someUrl"
        });
        navMenus.Add(new NavMenu
        {
            Id = "1",
            Auths = new AuthList {Admin = false, AnyBody = false, Member = false, Moderator = false, Program = true},
            IsActive = true, Name = "Menu 1",
            MenuItems = menuItems
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...