我是 MongoDB 新手,我有以下查询
var personList = collection.Find
(p => p.EmailAddressSha512 == PiSha512.CreateSha512(emailAddress.ToLower())).ToList();
执行查询抛出异常
MongoDB.Driver.Linq.ExpressionNotSupportedException:
'Expression not supported: (p.EmailAddressSha512 == value(System.Byte[])).
EmailAddressSha512
是 byte[]
并且 PiSha512.CreateSha512(emailAddress.ToLower())
返回 byte[]
。
虽然驱动程序(最新版本,2.21.0)引发异常并在调试模式下显示,但它似乎已得到处理,并且查询正确执行并返回预期的人员列表。我想知道一些事情。
您调用的
Find
方法采用表达式,而不是委托。作为参数传递的表达式通常用于解释而不是执行。
PiSha512.CreateSha512(emailAddress.ToLower())
并在异常中通知您这一点PiSha512.CreateSha512(emailAddress.ToLower())
,并将带有结果的变量传递到表达式中。