如果我的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”进行相反的处理,并将其包含在相同的结果中呢?
谢谢!