我有两个不同的集合,有一个共同的字段,比如UserId。 还有其他属性可以限定UserIds。

例如:

Collection 1: {UserId, SellsToUserId}

Collection 2: {UserId, BuysFromUserId}

我想运行一个操作,给我两组之间的区别。

示例查询将是: 获取给定UserId销售给的所有UserID,但不购买。

伪代码解决方案

var sellToCursor = collection1.Find(Query.EQ("UserId", Me)).SetFields({SellsToUserId});

var buyFromCursor = collection2.Find(Query.EQ("UserId", Me)).SetFields({BuysFromUserId});

SellToButDontBuyFrom[] = sellTo - buyFrom;   //definitely pseudocode here.

我想在MongoDB服务器上执行此操作,因为我有大量数据。

有任何建议以有效的方式做到这一点?

===============>>#1 票数:3 已采纳

您可以使用javascript执行相同的逻辑并在服务器上执行它,但它不会更快。 如果您的C#客户端具有到服务器的快速带宽,那将是更好的选择。 为了优化它,您可以分别按SellsToUserId和BuysFromUserId对两个查询进行排序,并通过两个类似于合并排序算法的游标进行迭代,您可以在sellToCursor到达终点时停止。

  ask by agarcian translate from so

未解决问题?本站智能推荐: