Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ElemMatch的ArgumentNullException_C#_.net_Mongodb_Mongodb .net Driver_Mongodb Query - Fatal编程技术网

C# ElemMatch的ArgumentNullException

C# ElemMatch的ArgumentNullException,c#,.net,mongodb,mongodb-.net-driver,mongodb-query,C#,.net,Mongodb,Mongodb .net Driver,Mongodb Query,给出了以下实体: public class MyClass { public MyClass() { Aliases= new List<string>(); } public Guid Id { get; set; } public string Name { get; set; } public List<string> Aliases{ get; set; } } 如何解决此限制/错误?ElemM

给出了以下实体:

public class MyClass
{
    public MyClass()
    {
        Aliases= new List<string>();
    }

    public Guid Id { get; set; }

    public string Name { get; set; }
    public List<string> Aliases{ get; set; }
}

如何解决此限制/错误?

ElemMatch
不像where子句那样过滤结果,它只将返回的数组限制为一个匹配项,或者不包含任何匹配项。您需要首先过滤文档,然后限制其中的数组

您应该像这样使用
Eq

Query.Or(
    Query<MyClass>.EQ(a => a.Name, request.Name),
    Query<MyClass>.EQ(a => a.Aliases, request.Name));
{
    "$or" : [
    {
        "Name" : "bar"
    },
    {
        "Aliases" : "bar"
    }]
}
MongoDB知道别名是一个数组,它将“搜索”名称,而不是“仅比较”

Query.Or(
    Query<MyClass>.EQ(a => a.Name, request.Name),
    Query<MyClass>.EQ(a => a.Aliases, request.Name));
{
    "$or" : [
    {
        "Name" : "bar"
    },
    {
        "Aliases" : "bar"
    }]
}