Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否有一种方法可以使用C在MongoDB中的集合之间创建联合_C#_Mongodb - Fatal编程技术网

C# 是否有一种方法可以使用C在MongoDB中的集合之间创建联合

C# 是否有一种方法可以使用C在MongoDB中的集合之间创建联合,c#,mongodb,C#,Mongodb,我是LINQ和MongoDB的新手。我有一个问题,MongoDB中有多个数据库,其中包含多个集合,所有集合都包含具有相同结构的文档。它们是由客户创建的事务。每个客户机都有自己的数据库,事务根据完成的月份进行存储。交易记录可能会变得巨大,而集合可能会变得非常庞大。当试图跨多个数据库和多个集合绘制这些事务的一致列表,同时能够对一次绘制的数据量使用跳过和限制时,就会出现问题。然后为了让它更有趣,还可以按日期排序。。。 事务的结构如下所示 { "_id" : 57, "date" : "Fri

我是LINQ和MongoDB的新手。我有一个问题,MongoDB中有多个数据库,其中包含多个集合,所有集合都包含具有相同结构的文档。它们是由客户创建的事务。每个客户机都有自己的数据库,事务根据完成的月份进行存储。交易记录可能会变得巨大,而集合可能会变得非常庞大。当试图跨多个数据库和多个集合绘制这些事务的一致列表,同时能够对一次绘制的数据量使用跳过和限制时,就会出现问题。然后为了让它更有趣,还可以按日期排序。。。 事务的结构如下所示

{
  "_id" : 57,
  "date" : "Fri Apr 26 2019 18:51:22 GMT+0200 (UTC)", 
  "userId" : 12,
  "companyId" : 78,
  "MetaData" : "Large Meta Data",
}
First Back 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... Next Last 
在搜索交易时,用户可以选择日期限制,然后系统将一次显示20、50、100或200条记录,并能够移动到下一组或跳到特定页码。换句话说,像这样的事情

{
  "_id" : 57,
  "date" : "Fri Apr 26 2019 18:51:22 GMT+0200 (UTC)", 
  "userId" : 12,
  "companyId" : 78,
  "MetaData" : "Large Meta Data",
}
First Back 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... Next Last 
我已经创建了一个算法,它可以通过检查将从中提取数据的每个集合的大小,根据每个页面的限制来计算要跳到哪些记录。但是,这仅在为一个客户机提取数据时有效。我现在也必须这样做,并在特定的时间范围内组合来自多个客户机的数据

我希望能够从SQL中创建类似于联合的东西,在这里我可以组合多个集合并将它们视为一个集合,同时对它们运行额外的过滤器。 我试过使用LINQ

MongoClient cnDb = GetMongoClient();
IMongoDatabase db1 = cnDb.GetDatabase("Client1");
IMongoDatabase db2 = cnDb.GetDatabase("Client2");
var col1 = db1.GetCollection<ClientTrans>("Transactions-201904");
var col2 = db2.GetCollection<ClientTrans>("Transactions-201904");

var query = (from trans1 in col1.AsQueryable<ClientTrans>() select trans1).Union(from trans2 in col2.AsQueryable<ClientTrans>() select trans2);
foreach(ClientTrans trans in query) 
{

}
这就产生了一个非常有用的错误

表达式树中不支持方法联合: 聚合[]。选择Trans1=> trans1.Unionaggregate[]选择trans2=>trans2

任何帮助或见解都将不胜感激