Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.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# 使用MongoDB和C在两个集合上使用MapReduce#_C#_Mongodb - Fatal编程技术网

C# 使用MongoDB和C在两个集合上使用MapReduce#

C# 使用MongoDB和C在两个集合上使用MapReduce#,c#,mongodb,C#,Mongodb,我有两个收藏,详细信息如下: 评论 “评论”:“你好”} {“_id”:ObjectId(“521588ccb54d23aca151a4”),“UserId:“5215862eb5d44d23aca1519e”,“Comment:“我喜欢mongo”} 使用者 我如何使用MapReduce实现以下目标(对于手头的任务来说,它是最好的吗)?理想情况下,这个集合也可能非常大。i、 几十万或几百万 { "UserId" : "5215862eb5d44d23aca1519d", "Comment":

我有两个收藏,详细信息如下:

评论 “评论”:“你好”} {“_id”:ObjectId(“521588ccb54d23aca151a4”),“UserId:“5215862eb5d44d23aca1519e”,“Comment:“我喜欢mongo”}

使用者 我如何使用MapReduce实现以下目标(对于手头的任务来说,它是最好的吗)?理想情况下,这个集合也可能非常大。i、 几十万或几百万

{ "UserId" : "5215862eb5d44d23aca1519d", "Comment": "Hello", "Nickname" : "Jane"}
{ "UserId" : "5215862eb5d44d23aca1519e", "Comment": "this is cool", "Nickname" : "Jon"}
{ "UserId" : "5215862eb5d44d23aca1519e", "Comment": "I like Mongo", "Nickname" : "Jon"}

Bote:我正在将MongoDB与.NET C#驱动程序一起使用。

MapReduce不是执行此任务的好工具,因为MapReduce查询总是在单个集合上执行。您必须在一个集合上执行MapReduce,并在映射函数中从另一个集合读取。但明确警告您不应该这样做:“reduce函数不应该访问数据库,甚至不应该执行读取操作”

MongoDB通常不是为执行连接操作而设计的

您可以做什么:

解决方案A:在应用程序层上执行连接。首先查询注释集合,然后在第二次查询中使用结果查询用户集合

解决方案B:在注释文档中存储作者昵称的副本,这样您就不必查询用户集合(在面向文档的数据库中,冗余不像关系数据库中那样有害)

{ "_id" : ObjectId("5215862eb5d44d23aca1519d"), "Nickname" : "Jane"}
{ "_id" : ObjectId("5215862eb5d44d23aca1519e"), "Nickname" : "Jon"}
{ "UserId" : "5215862eb5d44d23aca1519d", "Comment": "Hello", "Nickname" : "Jane"}
{ "UserId" : "5215862eb5d44d23aca1519e", "Comment": "this is cool", "Nickname" : "Jon"}
{ "UserId" : "5215862eb5d44d23aca1519e", "Comment": "I like Mongo", "Nickname" : "Jon"}