Javascript Mongo:其他对象中的交叉引用值

Javascript Mongo:其他对象中的交叉引用值,javascript,mongodb,mapreduce,aggregation-framework,Javascript,Mongodb,Mapreduce,Aggregation Framework,我有一个类似ff的收藏: { "word":"approve", "related" : [ { "relationshipType" : "cross-reference", "words" : [ "note" ] }, { "relationshipType" : "synonym", "words" : [ "demonstrate",

我有一个类似ff的收藏:

{
"word":"approve",
"related" : [
    {
        "relationshipType" : "cross-reference",
        "words" : [
            "note"
        ]
    },
    {
        "relationshipType" : "synonym",
        "words" : [
            "demonstrate",
            "ratify",
        ]
    }
],
},
{
"word": "note",
"related" : [
    {
        "relationshipType" : "synonym",
        "words" : [
            "butt",
            "need",
        ],
    },
    {
        "relationshipType" : "hypernym",
        "words" : [
            "air",
            "tone",
        ]
    },
    {
        "relationshipType" : "cross-reference",
        "words" : [
            "sign",
            "letter",
            "distinction",
            "notice",
        ]
    },
],

}
我想对所有在另一个对象中有一个单词的对象进行分组/分类

  • 名称(作为“批准”的交叉引用字段)包含注释。搜索“注释”一词。 或
  • 该词位于另一个对象的相关词中。例如,在“approve”下有一个同义词“approval”,然后在其相关词的任何字段中查找具有“approval”的其他对象
  • 然后将它们保存到名为categories的新集合中。 结果应该是:

    {
     "category": 1,
     "words":["approve","note"],
    }
    
    …以及单词数组中所有链接对象的单词字段的值

    我正在考虑在检查链接时使用某种递归,但我不确定如何实现。另一个潜在的问题是回到父层创建无限排序循环

    通过map reduce可以吗


    编辑:清晰性。

    这并不像你想象的那样清晰。你最好根据你拥有的样本文档实际显示你想要的结果。哦,好的,对不起。等一下,虽然编辑确实提供了更好的数据,但它仍然没有解决问题,因为你没有显示数据应该是什么样的样本结束。如果这是两个文档,您希望“合并”的结果是什么样的?