引用MongoDB中的相对对象

时间:2010-12-17 10:49:23

标签: mongodb

在给定排序查询的情况下,是否可以在mapReduce期间引用相对对象,甚至可以使用find($ where)?

e.g。给定

[
 { 'name' : 'bill',
   'age' : 20 }
,
 { 'name' : 'bill',
   'age' : 25 }
]

find({$where: 'this.age > previousItem.age'})

将返回:

 { 'name' : 'bill',
   'age' : 25 }

1 个答案:

答案 0 :(得分:0)

您无法访问map-reduce上下文中的光标,因此您无法“记住”上一个文档的内容。在map-reduce中,会单独处理每个文档

原因是map-reduce可以在多个分片上并行运行,从而提高性能。将来,还可以支持多线程映射减少作业。在这些情况下,没有真正的“前一项”,因为您同时处理集合的多个部分。它可以是当前线程中的上一项,当前分片上的上一项或所有分片中的上一项。

关于您的示例,如果您已在age上对查询进行了排序,则所有以前处理过的文档的年龄都小于或等于当前项目的年龄。所有未处理的项目的年龄将大于或等于当前项目的年龄。您可以使用find()来检索这些项目,但我不建议这样做,因为它可能会影响性能。此外,您只能访问当前项,而不能访问您在示例中尝试执行的上一项。

我认为你误解了map-reduce的概念。 你想要实现的目标是什么?