Mongodb聚合查询,根据从另一个集合获取的列表获取数据

Mongodb聚合查询,根据从另一个集合获取的列表获取数据,mongodb,bson,Mongodb,Bson,我有两个收藏。用户和客户 公司: {"_id":{"$oid":"599d8864a5304114ac9b8a0a"},"id":"company1","name":"Big Company", "users":["Jack", "Martin"]} {"_id":{"

我有两个收藏。用户和客户

公司

{"_id":{"$oid":"599d8864a5304114ac9b8a0a"},"id":"company1","name":"Big Company", "users":["Jack", "Martin"]}
{"_id":{"$oid":"599d8864a5304114ac9b8a0b"},"id":"company2","name":"Super Big Company", "users":["Kate", "Jack"]}
用户

{"_id":{"$oid":"59b0178ca5304101c1a99711"},"username":"Jack","hashedPassword":"2f1f147e358f28a74cd29c7f44eedd4ec0293d6c"},
{"_id":{"$oid":"59b0178ca5304101c1a99811"},"username":"Martin","hashedPassword":"1f5f147e358f21a74cd29c7f44eedd4ec0293d6c"}
有一个用户名,我想从
公司
获取
用户列表
,该用户是其成员

因此,流程如下所示:

Find all companies which have Jack in the list of their users -> extract and join arrays -> Return the list of User objects with matching username from the array
我知道使用聚合函数和$lookup在一个查询中就可以实现这一点,但我在尝试实现这一点时失败了

db.Clients.aggregate([
   {
      "$lookup":
         {
            "from": "Users",
            "localField": "users",
            "foreignField": "username",
            "as": "user_details"
        }
   },
  

{"$match": {"users":"Jack"}},
{"$unwind": "$user_details" },
{"$project": {"user_details" :1,"_id":0}}
])