C# 如何在C中应用MongoDb集合之间的联接

C# 如何在C中应用MongoDb集合之间的联接,c#,mongodb,asp.net-core-2.0,C#,Mongodb,Asp.net Core 2.0,我用一个简单的例子来说明我的问题,C中有两个类 class Table1 { [BsonId] public ObjectId _Id { get; set; } [BsonElement] public string Name { get; set; } } class Table2 { [BsonId] public ObjectId _Id { get; set; }

我用一个简单的例子来说明我的问题,C中有两个类

class Table1
    {
        [BsonId]
        public ObjectId _Id { get; set; }

        [BsonElement]
        public string Name { get; set; }
    }

class Table2
    {
        [BsonId]
        public ObjectId _Id { get; set; }

        [BsonElement]
        public int Age { get; set; }

        [BsonElement]
        public ObjectId UserId { get; set; }
    }
以下是MongoDB中的数据: 表1:

{id:5bbd9b904b235724d42d61b1,名称:User1}

表2:

{id:5bbd9bad4b235724d42d61b2,年龄:25,用户id:5bbd9b904b235724d42d61b1}

现在加入c控制台应用程序

static void ViewRecords()
    {
        MongoContext db = new MongoContext();
        var Table1 = db._database.GetCollection<Table1>("Table1");
        var Table2 = db._database.GetCollection<Table2>("Table2");

        var r = from t1 in Table1.AsQueryable()
                join t2 in Table2.AsQueryable() on t1._Id equals t2.UserId into result
                select new Table1()
                {
                    _Id = t1._Id,
                    Name = t1.Name
                };

        foreach (var a in r)
        {
            Console.WriteLine(a.Name);
        }
    }
现在它正在抛出异常

不支持GroupJoin查询运算符

我所关注的链接:

我已经通过nuget软件包管理器安装了mongocsharpdriver 2.7.0和MongoDB.Driver 2.7.0。
在过去的两天里,我的头都撞到墙上了。。非常感谢您的支持。

当我一次又一次地尝试时,我发现了一些非常有趣的东西。经过几次重大改变后,同样的方法似乎运行良好。 1.将MongoClient更改为IMongoClient,将MongoDatabase更改为IMongoDatabase

public class MongoContext
    {
        IMongoClient _client;
        public readonly IMongoDatabase _database;

        public MongoContext()
        {
            //Reading credentials from Web.config file
            _client = new MongoClient("mongodb://" + ConfigurationManager.AppSettings["MongoHost"] + ":" + ConfigurationManager.AppSettings["MongoPort"]);
            _database = _client.GetDatabase(ConfigurationManager.AppSettings["MongoDatabaseName"]);
        }
    }
我需要从上下文类中删除MongoServer

将ViewRecords方法更改为以下内容:

    static List<Table1> ViewRecords()
{
    try
    {
        MongoContext db = new MongoContext();
        IMongoCollection<Table1> = db._database.GetCollection<Table1>("Table1");
        IMongoCollection<Table2> = db._database.GetCollection<Table2>("Table2");

        var r = from t1 in Table1.AsQueryable()
                join t2 in Table2.AsQueryable() on t1._Id equals t2.UserId
                select new Table1()
                {
                    _Id = t1._Id,
                    Name = t1.Name
                };

        return r.ToList();
    }
    catch (Exception ex) { throw ex; }
}

现在它成功了。。我从一些博客中得到了这个提示,如果我再次发现相同的链接,我将与大家分享。

BTW-如果你没有使用表2中的任何内容,为什么要加入?@GiladGreen,我们只需要基于内部连接的表1数据…虽然我们也可以使用结果,但我只想知道为什么它不起作用。@S.Akbari,是否还有其他方法可以实现这些结果?连接是针对关系数据库的,文档数据库不应该有连接。您应该在C代码中运行DoyouJoins,使用C代码连接两个集合时不必转换为AsQueryable