数据库
首页 > 数据库> > c# – 在MongoDB中执行设置差异

c# – 在MongoDB中执行设置差异

作者:互联网

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

例如:

集合1:{UserId,SellsToUserId}

收集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服务器上执行此操作,因为我有大量数据.

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

解决方法:

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

标签:c,mongodb,mongodb-net-driver
来源: https://codeday.me/bug/20190630/1336042.html