Mongo db c#driver - 如何通过集合中的id加入?

时间:2017-07-06 09:18:13

标签: c# mongodb join aggregation-framework mongodb-.net-driver

我正在使用Mongo DB c#driver 2, 我正在尝试按ID(多对多)加入2个收藏

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中提取它。

我尝试使用Lookup功能:

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列表中的ID加入?

1 个答案:

答案 0 :(得分:0)

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

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