mongodb查找具有多个字段的$ elemMatch

时间:2018-07-30 10:49:02

标签: mongodb

每个人。我需要你的帮助。对于脚本,我必须按用户的ldap id搜索用户,但是我遇到的问题是搜索时没有输出。

用户具有以下输出。

db.users.find({“ name”:“ John Sample”}).toArray()

[
{
    "_id" : "testid",
    "createdAt" : ISODate("2017-05-11T13:49:35.125Z"),
    "services" : {
        "password" : {
            "bcrypt" : ""
        },
        "ldap" : {
            "id" : "12345678",
            "idAttribute" : "uid"
        },
        "resume" : {
            "loginTokens" : [ ]
        }
    },
    "username" : "john",
    "emails" : [
        {
            "address" : "john.sample@test.com",
            "verified" : true
        }
    ],
    "type" : "user",
    "status" : "offline",
    "active" : true,
    "name" : "John Sample",
    "_updatedAt" : ISODate("2018-07-05T18:44:22.061Z"),
    "roles" : [
        "user"
    ],
    "ldap" : true,
    "lastLogin" : ISODate("2018-07-05T10:33:00.712Z"),
    "statusConnection" : "offline",
    "utcOffset" : 2,
    "statusDefault" : "offline"
}
]

我使用了此命令,但没有成功。

db.users.find({“ services”:{“ $ elemMatch”:{“ ldap”:{“ $ elemMatch”:{“ id”:“ 12345678”}}}}}}).toArray() ;

[ ]

1 个答案:

答案 0 :(得分:0)

$ elemMatch用于查找与数组中的条件匹配的元素。但是服务是一个文档(子文档),而不是数组。只需使用点符号即可查询:

db.users.find({"services.ldap.id":"12345678"})