每个人。我需要你的帮助。对于脚本,我必须按用户的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() ;
[ ]
答案 0 :(得分:0)
$ elemMatch用于查找与数组中的条件匹配的元素。但是服务是一个文档(子文档),而不是数组。只需使用点符号即可查询:
db.users.find({"services.ldap.id":"12345678"})