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