我想从map函数访问另一个集合,这样我就可以对密钥进行查找并执行一些聚合。我可以使用db.collection_name
或BSON代码中的类似内容访问任何集合吗?
答案 0 :(得分:6)
如果你在本地试试,它会起作用。但是,这在分片场景中完全失败,因为集合或集合中的数据不会是分片的本地数据。
这也是不好的做法,因为M / R会导致难以追踪的级联查询。
如果您遇到此问题,您可以选择一些:
map
上的A
需要来自集合x,y,z
的字段B
,请将这些字段复制到{{1} }}。是的,它没有正常化,但是MongoDB不是关系数据库,它不打算进行规范化。A
上进行M / R,然后循环输出并使用A
中的数据在单独的脚本/流程中进行更新。我看过两种选择。我甚至看到#2转换为一个简单的B
循环,同时处理这两个部分。我已经用简单的for
循环和upserts成功替换了一些M / R作业。
答案 1 :(得分:2)
这是不可能的,因为它会在分片设置中中断。 Map / reduce只能使用他们调用的集合。