找到所有包含mongodb公共字段的文档

Mic*_*ael 2 mongodb

我有一个users集合:

{
  id: usera@acme.com,
  uid: '57672373683'
}

{
  id: userb@acme.com,
  uid: '25346346221'
}

{
  id: userc@acme.com,
  uid: '57672373683'
}
Run Code Online (Sandbox Code Playgroud)

我想运行一个查询,它将返回所有具有公共uid字段的用户,例如,在这里我将看到usera和userc在一起,因为它们具有相同的uid字段.

是否有可能在mongo中查询?

Par*_*ade 5

您可以使用Aggregation Framework对用户进行分组.查询将如下:

db.users.aggregate({$group : {_id : "$uid", users : {$addToSet : "$id"}}})
Run Code Online (Sandbox Code Playgroud)

结果将如下所示:

"result" : [
    {
        "_id" : "25346346221",
        "users" : [
            "userb@acme.com"
        ]
    },
    {
        "_id" : "57672373683",
        "users" : [
            "userc@acme.com",
            "usera@acme.com"
        ]
    }
]
Run Code Online (Sandbox Code Playgroud)