1

Juxtaposition.generate_for(position)我在从规范中调用的类上有一个类方法。该方法设置一个map reduce并调用它map_reduce(map, reduce).out(merge: "juxtapositions")

位置变量在 it 块之前的 le​​t 中定义。

执行时,如果我只是调用上面的函数(实际上只是在与位置相关的数据上调用 map reduce),那么下面的测试会失败:

Juxtaposition.count.should eq 1
Juxtaposition.first.value.should eq values

但是,如果我打电话

Juxtaposition.generate_for(positions).first["value"].should eq values

在这两个测试之前,它们都通过了。当我使用 pry 并generate_for从那里调用方法时,上述两个测试也通过了。

我应该注意 mongoid 中 map reduce 的一些奇怪行为吗?或者,有什么方法可以将结果强制到我以后的查询中。

4

1 回答 1

1

解决方案很简单。我只需要确保在调用 map reduce 时调用 find。

进一步来说:

map_reduce(map, reduce).out(merge: "juxtapositions").first

或者

map_reduce(map, reduce).out(merge: "juxtapositions").to_a

如果没有 to_a 或 first ,实际的 map reduce 似乎不会执行,即使它打算存储在另一个集合中。

于 2013-01-24T23:14:16.533 回答