我有两个不同的集合,有一个共同的字段,比如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

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

1回复

使用C#驱动程序在mongodb中执行Map

我有一个要映射的对象(对于实例Person )。 我想执行一些类似于LINQ的Select方法的操作,并返回IEnumerable<ObjectId>而不是IEnumerable<Person> 。 我还发现我一直在寻找的方法在mongodb术语中称为map
2回复

在MongoDb中,如何在数组属性中的对象上设置值?

我的目标是在文档数组中的特定对象上放置“删除时间”时间戳。 如果文档如下所示: 我希望能够说“查找具有subdoc.key == 5和subdoc.value ==“ ade”的文档;将subdoc.isActive设置为false并将subdoc.deleteAt =当前数据库时
1回复

如何在MongoDB C#驱动程序中动态设置属性

我创建了一个接受JObject的扩展方法,并为C#MongoDB驱动程序生成更新定义。 我们的想法是JObject中的属性和值用于映射和更新数据库中的属性。 但是,更新查询始终抛出异常。 我的扩展方法采用更新定义构建器并执行以下操作: 处理与数据库交互的我的存储库类有一个接受对
1回复

MongoDB c#驱动程序 - 在序列化字典中执行LINQ“Any”

我有一个带有一些属性的文档类型,其中一个是Dictionary <string,string>。 序列化和去实现似乎工作正常(我可以搜索,执行CRUD操作等)。 问题是我正在尝试编写一个方法来查找该类型的所有对象,其中字典在其Keys中包含特定值(id)。 试图查询:
1回复

MongoDB c#驱动程序:如何为类中的所有成员设置SetIgnoreIfDefault

我想为类的所有属性设置SetIgnoreIfDefault(true)。 (这可以将大量的默认数据保存在存储中) 我可以为每个属性显式调用SetIgnoreIfDefault: 但是,我有许多类和许多属性,如果我修改了这些类,则需要记住要更改注册。 有没有一种方法可以在一次
1回复

如何在C#驱动程序中设置MongoDB Change Stream'ManageType'?

运行新的MongDB服务器版本3.6,并尝试将更改流监视添加到集合以获取新插入和文档更新的通知时,我只接收更新通知,而不是插入。 这是我尝试添加手表的默认方式: 然后我从MongoDB下载了C#源代码,看看他们是如何做到这一点的。 查看他们的更改流手表的测试代码,他们创建一个新文
1回复

在mongodb中增加DateTime

我正在使用C#的.net驱动程序连接到mongodb。 使用mongodb,可以直接在数据库中增加值: 日期也可以吗? 显然,这不会建立,因为字段的类型( DateTime )必须匹配所添加的值的类型( TimeSpan )( 请参阅docs )。 除了首先从数据库中获取
2回复

设置mongodb副本集

我是mongo db的新手,希望建立副本集。 我对如何实现这一目标感到困惑。 我想拥有3台不同机器的主要,次要和仲裁者,每台机器都运行mongo。 我一直在尝试设置它,但我认为它已一团糟! 如何删除已有的所有副本集/配置? 我已经安装了mongo,并将mongo的每个实例指
1回复

如何在MongoDB中实现呢?

我将SQL Server数据库迁移到MongoDB。现在我有一个问题。 如果我们使用RMDB,这很简单,但是如何在MongoDB中执行这样的查询?还是我必须更改架构 ?以及如何 ? 有什么帮助吗?
1回复

MongoDB执行此查询的最有效方法

我有一个要求,当给定对象列表时,我需要排除数据库中已经存在的对象。 我采用了传统的方法,即遍历对象,然后一次检查对象是否存在于我的mongo集合中。 这是做我想要达到的目标的最有效方法吗?某种程度上,我觉得我应该执行某种批处理操作。 非常感谢 更新: 我发现以下代