MongoDb драйвер 2.7 запрос соединения - PullRequest
0 голосов
/ 28 октября 2018

Я пытаюсь объединить две простые коллекции с помощью mongoDbDriver linq, но у меня возникла странная проблема при попытке выполнить результирующий запрос.Я попытался повторить запрос, используя обычный Linq, поэтому все выполнялось в памяти, и у меня не было никаких проблем.Внутри конструктора PresenceSearchElement я ничего не делаю, поэтому здесь нет пустых исключений.

    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 ....

Я не уверен, что у меня ошибка в драйвере, или я просто делаю что-то не так.

...