【发布时间】:2016-11-23 01:52:49
【问题描述】:
不是关于 mongoDB 中连接的问题
我在 mongoDB 中有两个集合,没有公共字段,我想将 zip 函数应用到(如 Python、Haskell)。两个集合具有相同数量的文档。
例如:
假设一个集合 (Users) 是供用户使用的,另一个 (Codes) 是唯一的随机生成代码。
收藏用户:
{ "_id" : ObjectId(""), "userId" : "123"}
{ "_id" : ObjectId(""), "userId" : "456"}
收集代码:
{ "_id" : ObjectId(""), "code" : "randomCode1"}
{ "_id" : ObjectId(""), "code" : "randomCode2"}
所需的输出是为用户分配一个唯一的代码。如下:
输出
{ "_id" : ObjectId(""), "code" : "randomCode1", "userId" : "123"}
{ "_id" : ObjectId(""), "code" : "randomCode2", "userId" : "456"}
有没有办法用聚合管道做到这一点?
或者也许使用 map reduce?不要这么认为,因为它只适用于一个集合。
我考虑过在每个文档对的两个集合中插入另一个随机 id,然后将 $lookup 与这个新 id 一起使用,但这似乎有点矫枉过正。另外一种选择是导出和使用 Python,因为没有那么多文档,但我觉得应该有更好的方法。
【问题讨论】:
-
您需要两个不同的查询。但是您可以使用
$zip运算符ziparray in MongoDB。 -
您是否希望在位置上将集合 1 中的文档 1 映射到集合 2 中的文档 1?
-
@notionquest 不一定,我不在乎哪个用户得到哪个代码,只要他们得到一个唯一的代码。
标签: mongodb