Arrays 如何使用mongodb查询json文件中数组的更多信息?

Arrays 如何使用mongodb查询json文件中数组的更多信息?,arrays,json,database,mongodb,nosql,Arrays,Json,Database,Mongodb,Nosql,“following”显示用户跟踪的人的用户ID。 我希望有一个输出查询,显示用户ID和他只关注的人的工资(不需要年龄和用户的工资)。我看到可以使用$lookup(),但我不确定是否使用它 我想要的输出如下所示,我可以知道这是否可能吗?我也愿意接受任何其他输出。提前谢谢你 { "userid": 1, "following": [2, 3], "salary": 1000, "age": 19 }, { "userid": 2, "following": [], "salary": 2000,

“following”显示用户跟踪的人的用户ID。 我希望有一个输出查询,显示用户ID和他只关注的人的工资(不需要年龄和用户的工资)。我看到可以使用$lookup(),但我不确定是否使用它

我想要的输出如下所示,我可以知道这是否可能吗?我也愿意接受任何其他输出。提前谢谢你

{
"userid": 1,
"following": [2, 3],
"salary": 1000,
"age": 19
},
{
"userid": 2,
"following": [],
"salary": 2000,
"age": 25
},
{
"userid": 3,
"following": [2],
"salary": 1500,
"age": 20
},
您可以使用将集合加入自身,然后使用stage排除不需要的字段,如下所示:

{
"userid": 1,
"following": [{2, 2000}, {3, 1500}]
},
{
"userid": 2,
"following": []
},
{
"userid": 3,
"following": [{2, 2000}]
}



输出与您想要的不一样,但正如您所说,您愿意接受我发布的所有建议:

db.collection.aggregate([
  {
    $graphLookup: {
      from: "collection",
      startWith: "$following",
      connectFromField: "following",
      connectToField: "userid",
      as: "following",
      maxDepth: 0
    }
  },
  {
    $project: {
      "_id": 0,
      "userid": 1,
      "following.salary": 1,
      "following.userid": 1
    }
  }
])
游乐场:

[
  {
    "following": [
      {
        "salary": 2000,
        "userid": 2
      },
      {
        "salary": 1500,
        "userid": 3
      }
    ],
    "userid": 1
  },
  {
    "following": [],
    "userid": 2
  },
  {
    "following": [
      {
        "salary": 2000,
        "userid": 2
      }
    ],
    "userid": 3
  }
]