У меня есть коллекция, которую я пытаюсь выполнить с помощью драйвера C#. структура документа:Запрос MongoDb из C# - используя Linq .Any() с предикатом
{
"_id" : 3121 ,
"Active" : true ,
"CategoryId" : 1 ,
"Crci" : "IH" ,
"CultureId" : null ,
"DateUpdated" : {
"$date" : 1381916923120
} ,
"Description" : "National Careers Service: Actuary" ,
"Keywords" : "" ,
"MaxLevel" : null ,
"MinLevel" : null ,
"PhoneNumber" : " " ,
"Priority" : 1 ,
"Title" : "National Careers Service: Actuary" ,
"WebUrl" : "https://nationalcareersservice.direct.gov.uk/advice/planning/jobprofiles/Pages/actuary.aspx" ,
"CareerCultureExternalResources" : [
{
"CareerId" : 5 ,
"CultureId" : 1 ,
"DisplayOrder" : 1 ,
"ExternalResourceId" : 3121 ,
"Vgs" : null
}
] ,
"SubjectExternalResources" : [ ] ,
"LifestyleCategories" : null
}
запрос я пытаюсь запустить это:
collection.AsQueryble().Where(
er =>
er.CareerCultureExternalResources.Any(
ccer => ccer.CareerId == request.CareerId && ccer.CultureId == request.CultureId));
передавая значения careerId = 637
и cultureId = 1
, я получаю ошибку: "Unsupported where clause: ((Int32)ccer.CareerId == 637)"
Однако на учебники MongoDB на странице он говорит, что этот вид запроса покрыт: http://docs.mongodb.org/ecosystem/tutorial/use-linq-queries-with-csharp-driver/
Я ухожу п. версия 1.8.3 драйвера
Соответствуют ли типы данных? Является ли 'CareerId'' '' запросом' Int32? – WiredPrairie
Используйте класс Query для создания ваших запросов следующим образом: Query.EQ («CareerId», request.CareerId). –
@WiredPrairie Это одна из интереснейших вещей - «CareerId» является короткой, а также типом данных для «CareerCultureExternalResource». Таким образом, типы данных совпадают, но ошибка не имеет смысла. Я не уверен, почему он пытается передать его в 'int' – Anduril