у меня есть список ниже, я не знаю, как запросить объект в массиве
class a
{
public string Name{get;set;}
public List<b> Attr{get;set;}
}
class b
{
public string Card{get;set;}
public sring SN{get;set;}
}
С# как написать запрос? использовать определение фильтра
FilterDefinition<a> filter = Builders<a>.Filter.Empty;
a.Eq( q=>q.Attr.Card, '001') ..., wrong...
Вам нужен Элемматч. Затем вы можете передать фильтр для элементов массива либо как FilterDefinition<b>
, либо как лямбда-выражение:
FilterDefinition<a> filter = Builders<a>.Filter.ElemMatch(q => q.Attr, Builders<b>.Filter.Eq(attr => attr.Card, "001"));
или
FilterDefinition<a> filter = Builders<a>.Filter.ElemMatch(q => q.Attr, attr => attr.Card == "001");
пожалуйста, помогите это также, спасибо. meta.stackoverflow.com/questions/385952/…
@badcodeforme Вы опубликовали это на сайте мета StackOverflow (т. е. на сайте, предназначенном для обсуждения этот сайт, а не для вопросов по программированию). В любом случае, вы видите, как я сделал здесь подзапрос ElemMatch, похоже, вам понадобится еще один подзапрос для подзапроса. Обратите внимание, что если он не проиндексирован, это будет не очень эффективно.