我正在嘗試從 MongoDB 獲取我的結果集。我需要在這里使用 In 過濾器。這是我試圖獲取資料的代碼。
IMongoCollection<VaersVax> vaersVaxCollection = mongoDatabase.GetCollection<VaersVax>("VaersVax");
var query = vaersVaxCollection.AsQueryable().Where(x => x.VAX_MANU.In(vaxManuList) && x.VAX_NAME.In(vaxNameList) && x.VAX_TYPE.In(vaxTypeList));
var list = query.Select(x => x.VAERS_ID).ToHashSet();
當我嘗試得到結果時,我得到了錯誤;
System.ArgumentException: Unsupported filter: {document}{VAX_MANU}.In(value(System.String[])).
at MongoDB.Driver.Linq.Linq2Implementation.Translators.PredicateTranslator.Translate(Expression node)
at MongoDB.Driver.Linq.Linq2Implementation.Translators.PredicateTranslator.TranslateAndAlso(BinaryExpression node)
at MongoDB.Driver.Linq.Linq2Implementation.Translators.PredicateTranslator.Translate(Expression node)
at MongoDB.Driver.Linq.Linq2Implementation.Translators.PredicateTranslator.TranslateAndAlso(BinaryExpression node)
at MongoDB.Driver.Linq.Linq2Implementation.Translators.PredicateTranslator.Translate(Expression node)
at MongoDB.Driver.Linq.Linq2Implementation.Translators.PredicateTranslator.Translate(Expression node, IBsonSerializerRegistry serializerRegistry)
at MongoDB.Driver.Linq.Linq2Implementation.Translators.QueryableTranslator.TranslateWhere(WhereExpression node)
at MongoDB.Driver.Linq.Linq2Implementation.Translators.QueryableTranslator.Translate(Expression node)
at MongoDB.Driver.Linq.Linq2Implementation.Translators.QueryableTranslator.TranslateSelect(SelectExpression node)
at MongoDB.Driver.Linq.Linq2Implementation.Translators.QueryableTranslator.Translate(Expression node)
at MongoDB.Driver.Linq.Linq2Implementation.Translators.QueryableTranslator.TranslatePipeline(PipelineExpression node)
at MongoDB.Driver.Linq.Linq2Implementation.Translators.QueryableTranslator.Translate(Expression node)
at MongoDB.Driver.Linq.Linq2Implementation.Translators.QueryableTranslator.Translate(Expression node, IBsonSerializerRegistry serializerRegistry, ExpressionTranslationOptions translationOptions)
at MongoDB.Driver.Linq.Linq2Implementation.MongoQueryProviderImpl`1.Translate(Expression expression)
at MongoDB.Driver.Linq.Linq2Implementation.MongoQueryProviderImpl`1.Execute(Expression expression)
at MongoDB.Driver.Linq.Linq2Implementation.MongoQueryableImpl`2.GetEnumerator()
at System.Collections.Generic.HashSet`1.UnionWith(IEnumerable`1 other)
at System.Collections.Generic.HashSet`1..ctor(IEnumerable`1 collection, IEqualityComparer`1 comparer)
at System.Linq.Enumerable.ToHashSet[TSource](IEnumerable`1 source, IEqualityComparer`1 comparer)
at System.Linq.Enumerable.ToHashSet[TSource](IEnumerable`1 source)
at MongoOperations.MongoHelper.getTop10MostFrequentSymptom1DataByVaxManuNameType(IEnumerable`1 vaxManuList, IEnumerable`1 vaxNameList, IEnumerable`1 vaxTypeList) in D:\KodUygulamalari\OkulProje\VaersWebAPI\MongoOperations\MongoHelper.cs:line 318
at MongoBusiness.MongoBusinessOperations.getTop10MostFrequentSymptom1DataByVaxManuNameType(IEnumerable`1 vaxManuList, IEnumerable`1 vaxNameList, IEnumerable`1 vaxTypeList)
我可以以某種方式在 MongoDB 驅動程式上執行 LINQ 查詢,還是應該檢查不同的方法?
uj5u.com熱心網友回復:
MongoDB.Driver 支持 linq。例如:
IMongoCollection<VaersVax> vaersVaxCollection = mongoDatabase.GetCollection<VaersVax>("VaersVax");
var query = vaersVaxCollection.AsQueryable().Where(x => vaxManuList.Contains(x.VAX_MANU) && vaxNameList.Contains(x.VAX_NAME) && vaxTypeList.Contains(x.VAX_TYPE));
var list = query.Select(x => x.VAERS_ID).ToHashSet();
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/461437.html
