MongoDb驱动程序2.7查询联接

时间:2018-10-28 10:39:59

标签: c# mongodb .net-core mongodb-.net-driver

我正在尝试使用mongoDbDriver linq加入两个简单的集合,但是在尝试执行结果查询时遇到了一个奇怪的问题。 我试图使用普通的Linq复制查询,以便执行内存中的所有内容,而且没有任何问题。 在PresenceSearchElement的构造函数内部,我什么也不做,因此那里没有null异常。

    var userCollection = DbContext.GetCollection<User>();
    var presenceCollection = DbContext.GetCollection<Presence>();

    var fb = new FilterDefinitionBuilder<Presence>();
    var presencesList = presenceCollection.Find(fb.Empty).ToList();

    var fb2 = new FilterDefinitionBuilder<User>();
    var userList = userCollection.Find(fb2.Empty).ToList();
    //Memory query execution
    var linqRes = presencesList.Join(
        userList, 
        presence => presence.UserId,
        user => user.Id,
        (presence, user) => new PresenceSearchElement(presence, user)).ToList();
    //mongodB query construction
    var mongoDbJoinQuery = presenceCollection.AsQueryable()
        .Join(
            userCollection.AsQueryable(),
            presence => presence.UserId,
            user => user.Id,
            (presence, user) => new PresenceSearchElement(presence, user));
    var mongoDbRes = await mongoDbJoinQuery.ToListAsync();

这是执行上述代码的最后一行接收到“ System.NullReferenceException”时得到的堆栈跟踪。

   at MongoDB.Driver.Linq.Processors.Pipeline.MethodCallBinders.JoinBinder.Bind(PipelineExpression pipeline, PipelineBindingContext bindingContext, MethodCallExpression node, IEnumerable`1 arguments)
   at MongoDB.Driver.Linq.Processors.MethodInfoMethodCallBinder`1.Bind(PipelineExpression pipeline, TBindingContext bindingContext, MethodCallExpression node, IEnumerable`1 arguments)
   at MongoDB.Driver.Linq.Processors.PipelineBinderBase`1.BindMethodCall(MethodCallExpression node)
   at ....

我不确定驱动程序中是否有错误,或者我做错了什么。

0 个答案:

没有答案