2017-07-06 57 views
0

我使用蒙戈DB C#驱动程序2, 我试图加入收藏2通过ID(多对多)Mongo db c#驱动程序 - 如何通过ID在集合中加入?

Class A 
{ 
    public string id; 
    public string name; 
    public list<string> classBReferenceid; // <--- I want use this as the "keys" for the join 
    public list<B> myBs; 
} 
Class B 
{ 
    public string id; // <--- I use this as the "key" for the join 
    public string name; 
} 

在我的DB类“A”被保存无数据“myBs”,我想在一次通话中将它从mongo中拉出来。

我尝试使用查找功能:

IMongoCollection<A> mongoACollection = // already set in driver.... 
IMongoCollection<B> mongoBCollection = // already set in driver.... 

IAggregateFluent<A> results = _mongoACollection.Aggregate(). 
       Lookup<A, B, A>(
        mongoBCollection, 
        a => a.classBReferenceid, 
        b => b.Id, 
        a => a.myBs); 

但它不工作(不加入任何东西),可能是因为“classBReference”是一个列表,而不是一个“id”。

我怎样才能使用查找到加入一个集合的ID出现在另一个集合中的ID列表?

+0

什么是你的mongo服务器版本?这将启动3.3.4 mongo版本。更多细节请看https://jira.mongodb.org/browse/SERVER-22881 – Veeram

+0

谢谢,我刚刚看到一个关于这个功能的类似线程, 我用了3.4 ..但是我的内嵌Mongo是3.2 –

回答

0

该功能是在MongoDb v3.3.4中引入的,但是我的本地实例通过Mongo2Go使用MongoDb 3.2,我使用它来进行单元测试。

一旦我将本地实例升级到v3.3.4,问题就解决了。

+1

请示例代码 – rnofenko

+0

这个例子是在问题...升级到新版本使代码工作 –

相关问题