有没有办法修改序列中的元素,以便只返回项目的整理版本?
let $currencies := ('dollar', 'Dollar', 'dollar ')
return fn:collated-only($currencies, "http://marklogic.com/collation/en/S1/T00BB/AS")
=> ('dollar', 'dollar', 'dollar')
答案 0 :(得分:3)
存储在范围索引(提供构面)中的值实际上是遇到的第一个与其他值相比较的值。 (因为,校对说你不在乎......)
你可以通过电话获得很长的路要走
@foreach($users as $user)
{{$user->image->avatar}}
@endforeach
这不会完全相同,因为它会覆盖一些东西并使其他东西不足,但它可能对你的目的有好处。
答案 1 :(得分:2)
这是预期的输出吗?没有fn:collated-only函数,所以我假设你问的是如何编写这样的函数或是否有这样的函数。
问题是,在排序规则比较中没有从一个字符串到另一个字符串的映射,只有一个比较算法(the Unicode Collation Algorithm)所以确实没有规范类型的字符串可以返回给你,并且因此没有API可以这样做。
退后一步,你实际上要解决的问题是什么?根据整理的规则,“美元”和“美元”是等价的,并且通过使用它,您声明您不关心您使用哪种形式,因此您可以使用任何一种形式。
答案 2 :(得分:1)
如果这些值在XML元素中并且您使用BasicDBObject
的范围索引,则可以执行以下操作:
http://marklogic.com/collation/en/S1/T00BB/AS
这将产生如下结果:
let $ref := cts:element-reference(xs:QName("currency"), "collation=http://marklogic.com/collation/en/S1/T00BB/AS")
for $curr in cts:values($ref, (), "frequency-order")
return $curr || ": " || cts:frequency($curr)
......等等。整理将忽略您的样本输入之间的差异。这些结果可以根据需要进行格式化。那是你想要做的吗?