Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.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
Mongodb 从多个嵌入文档中查找最长日期_Mongodb_Mongodb .net Driver - Fatal编程技术网

Mongodb 从多个嵌入文档中查找最长日期

Mongodb 从多个嵌入文档中查找最长日期,mongodb,mongodb-.net-driver,Mongodb,Mongodb .net Driver,我收集的许多文档之一如下所示: { "_id" :123, "a" :[ { "_id" : 1, "dt" : ISODate("2013-06-10T19:38:42Z") }, { "_id" : 2, "dt" : ISODate("2013-02-10T19:38:42Z") } ], "b" :[

我收集的许多文档之一如下所示:

{ "_id" :123,
  "a"  :[
            { "_id" : 1,
              "dt" :  ISODate("2013-06-10T19:38:42Z")
            },
            { "_id" : 2,
              "dt" :  ISODate("2013-02-10T19:38:42Z")
            }
      ],
  "b"  :[
            { "_id" : 1,
              "dt" :  ISODate("2013-02-10T19:38:42Z")
            },
            { "_id" : 2,
              "dt" :  ISODate("2013-23-10T19:38:42Z")
            }
      ],
  "c"  :[
            { "_id" : 1,
              "dt" :  ISODate("2013-03-10T19:38:42Z")
            },
            { "_id" : 2,
              "dt" :  ISODate("2013-13-10T19:38:42Z")
            }
      ]
}
我想找到整个文档的最长日期(a、b、c)。
我现在的解决方案是,我遍历所有根
\u id
,然后在聚合框架中为每个
a
b
c
为每个根文档执行
$match
。这听起来效率很低,有更好的想法吗?

你的问题与我的非常相似。看看吧


与该解决方案一样,可以使用MongoDB的聚合框架处理您的问题,使用
$project
$cond
操作符重复展平文档,同时在每一步保留最大值

你是说a、b和c中所有日期的最大值?如果a、b、c等键事先不知道,你需要尝试使用map reduce。你尝试过了吗?@ iNoSPG是的……有两种选择:蛮力+线程,或者使树变平并排序它们。如果你想对你的集合运行的查询类型不能被你的模式干净地支持,你应该考虑把你的模式变成一个。