类型和值顺序
    在检查是否相等或不相等或确定值的排序顺序时，AQL使用确定性算法，该算法同时考虑数据类型和实际值。
    比较的操作数首先按其数据类型进行比较，如果操作数具有相同的数据类型，则仅按其数据值进行比较。
    比较数据类型时，使用以下类型顺序：
    null  <  bool  <  number  <  string  <  array/list  <  object/document
    这意味着null是AQL中最小的类型，而document是具有最高顺序的类型。如果比较的操作数具有不同的类型，则确定比较结果并完成比较。
    如果两个比较的操作数具有相同的数据类型，则将比较操作数的值。对于基本类型（null，布尔值，数字和字符串），结果定义如下：
    null：null等于null
    布尔值：false小于true
    数字：数值按基数排序
    字符串：使用本地化比较对字符串值进行排序，使用配置的 服务器语言 根据该语言的字母顺序规则进行排序
    注意：与SQL不同，可以将null与任何值进行比较，包括null 本身，而不会自动将结果转换为null。
    
    对于化合物，将应用以下特殊规则：
    
    从第一个元素开始，通过逐个位置比较它们的各个元素来比较两个数组值。对于每个位置，首先比较元素类型。如果类型不相等，则确定比较结果，并且比较结束。如果类型相等，则将比较两个元素的值。如果其中一个数组已完成，而另一个数组在比较位置仍然有一个元素，则将null用作完全遍历数组的元素值。
    
    如果数组元素本身是复合值（数组或对象/文档），则比较算法将递归检查元素的子值。递归比较元素的子元素。
    
    通过检查属性名称和值来比较两个对象/文档操作数。首先比较属性名称。在比较属性名称之前，将创建两个操作数的所有属性名称的组合数组，并按字典顺序进行排序。这意味着在比较两个对象/文档时，在对象/文档中声明属性的顺序无关紧要。
    
    然后遍历组合和排序的属性名称数组，然后从两个比较的操作数中查找相应的属性。如果对象/文档之一不具有具有所寻找名称的属性，则其属性值被视为null。最后，使用前面提到的数据类型和值比较来比较两个对象/文档的属性值。对所有对象/文档属性执行比较，直到明确的比较结果为止。如果找到明确的比较结果，则比较结束。如果没有明确的比较结果，则将两个比较的对象/文档视为相等。