Неподдерживаемый фильтр MongoDB .net core с использованием построителей или linq сравнивает два поля

#c# #mongodb #linq #.net-core #mongodb-.net-driver

Вопрос:

Я пытаюсь сравнить два файла в документе, для сравнения я использую фильтр buildrs

 var builder = Builderslt;Tgt;.Filter;   

так что это работа, когда я помещаю статические данные или данные из варибал, как это

 var filter = builder.Eq(c =gt; c.IsValid, true); filter = filter amp; builder.Gte(c =gt; c.ExpirationDate, DateTime.Now);  

но когда я пытаюсь сравнить две колонки,

Подобный этому

 filter = filter amp; builder.Where(c =gt; c.NumberOfAllowedUses gt; c.NumberOfUses);  

Я столкнулся с этой ошибкой

 Unsupported filter: ({document}{NumberOfAllowedUses} gt; {document}{NumberOfUses})  

Я пытался

 filter = filter amp; builder.Gt("this.NumberOfAllowedUses-this.NumberOfUses", 0);  

не возвращайте данные.

В конце концов, как я использую фильтр

 var query = _couponRepository.Collection.OfTypelt;Tgt;().Find(filter); var list = query.ToListAsync();  

Дополнительная информация SQL-запрос

 Select * from Coupon where NumberOfAllowedUses gt; NumberOfUses  

Запрос MongoDB

 db.Coupon.find({  "$where": "this.NumberOfAllowedUses gt; this. NumberOfUses" });  

Итак, как я могу сравнить два fied Спасибо

Комментарии:

1. этот запрос не поддерживается типизированным способом, вы можете использовать любой допустимый необработанный запрос MQL только в качестве строкового входного аргумента: coll.Find("{ valid bson raw mql request}") . ПРИМЕЧАНИЕ. этот запрос будет отправлен непосредственно на сервер, поэтому вам следует использовать имя поля, используемое на стороне сервера