寻找有关如何将mongodb文档分为两个字段的建议

时间:2019-07-16 23:14:04

标签: mongodb mongodb-java

如果我的mongodb集合中有许多个文档,如下所示:

{
  "I": "123",
  "O": "234"
}
{
  "I": "123",
  "O": "345"
}
{
  "I": "234",
  "O": "432"
}

它表明ID为“ 123”的事物与ID为“ 234”的其他事物有关。其他文档可能会显示“ 123”与具有另一个ID的对象相关,或者“ 234”与具有另一个ID的对象相关。

我想检索满足我的查询的所有这些文档,然后对它们进行分组,以便可以看到与“ I”中的ID相关的ID列表(“ O”中)。我还希望能够显示相反的内容,其中“ O”中的内容包含所有相关“ I”的列表。所以我正在寻找一个看起来像这样的结果:

{
  "123": ["234", "345", "456", "567"],
  "234": ["123", "432", "543", "654", "765"]
  ...,
  ...,
  "999": ["333", "444"]
}

我不确定该如何去做。根据我的经验,我无法创建作为价值的钥匙。而且我们的某些MongoDB安装版本太小了,例如3.4,所以我不能使用3.4.4功能,例如objectToArray或arrayToObject。如果我错了,请教育我! :)

可能满足以下条件:

{
  "I": "123", "O": ["234", "345", "456", "567"],
  "I": "234", "O": ["123", "432", "543", "654", "765"]
  ...,
  ...,
  "I": "999", "O": ["333", "444"]
}

要获得此结果,我是否需要执行类似“ $ group by I”和$ addToSet与“ O”的操作?这是正确的方法吗,我错过了什么吗?但是,我又如何将$ group by“ O”和$ addToSet与“ I”进行相反的处理,并将其包含在相同的结果中呢?

谢谢!

0 个答案:

没有答案