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