有没有一种方法可以使用类似于SQL中的“IN”语句的语法来查询LDAP?我的意思是提供一个值列表,而不是一次又一次地重复字段名称。要与列表进行比较的LDAP查询语法
让我解释一下:)
我有类似的查询:
(|(name=joe)(name=bill)(name=mark)(name=john)(name=rob))
有没有办法来缩小这个查询得到的东西是这样的:
(name=joe,bill,mark,john,rob)
感谢
有没有一种方法可以使用类似于SQL中的“IN”语句的语法来查询LDAP?我的意思是提供一个值列表,而不是一次又一次地重复字段名称。要与列表进行比较的LDAP查询语法
让我解释一下:)
我有类似的查询:
(|(name=joe)(name=bill)(name=mark)(name=john)(name=rob))
有没有办法来缩小这个查询得到的东西是这样的:
(name=joe,bill,mark,john,rob)
感谢
不幸的是没有。 ldapsearch过滤器必须符合RFC2254标准。
但是你可以写你自己的包装(例如shell脚本调用ldapsearch的),这将改写你的列表类似的语法正确成语法RFC2254 :)
而且,我猜你想要的查询中使用|而不是&。
不,但您希望的结果可以通过多种方式实现。一种是以某种方式将条目分组在一起。假设“乔”,“账单”,“标记”和其他人有共同之处是合理的。使用groupOfUniqueNames
对象类,目录管理员可以将“joe”,“bill”,“mark”和其他组放在一个组中,以便可以检索它们。
或者,如果“joe”,“bill”,“mark”和其他属性具有共同的属性,则可以在组内容由过滤器确定的情况下使用动态组。例如,如果“joe”,“bill”,“mark”和其他人向同一经理报告,并且经理的条目是name=matthew,ou=managers,dc=example,dc=com
,“joe”,“bill”,“mark”,并且其他人可能有属性managersDn
的值为name=matthew,ou=managers,dc=example,dc=com
。目录管理员可以使用过滤器managerDn=name=matthew,ou=managers,dc=example,dc=com
创建动态组。动态组的优势在于,每次组是搜索的一部分时都会进行更新,因此无需手动更新。
或者,某些专业品质的目录服务器支持使用虚拟属性,这些虚拟属性会导致基于某种其他条件为条目生成属性。
可以这么说,假设您搜索的条目以某种方式相关,请使用目录服务器分组机制将它们组合在一起。如果它们不相关,那么过滤器必须与您列出的一样,除了|
而不是&
。
谢谢,我只是在我原来的问题:) – MaxP 2012-03-19 14:12:58