为什么ARRAY_PUT没有使用null属性重复删除对象?

时间:2017-04-26 00:04:31

标签: couchbase n1ql nosql

根据https://developer.couchbase.com/documentation/server/current/n1ql/n1ql-language-reference/arrayfun.html

  

ARRAY_PUT(表达式,值,......)

     

此函数返回一个新数组,如果值为值,则附加值   尚未出现。否则,它返回未修改的输入   阵列。

但是我发现如果值是一个具有null属性的对象,它永远不会匹配数组中的现有值。

例如,请执行以下查询:

SELECT ARRAY_PUT([{'foo': 0}], {'foo': 0})

结果是:

[{"foo": 0}]

现在将属性更改为null:

SELECT ARRAY_PUT([{'foo': null}], {'foo': null})

结果是:

[{"foo": null}, {"foo": null}]

为什么ARRAY_PUT没有使用null属性重复数据删除对象?

1 个答案:

答案 0 :(得分:0)

NULL表示未定义,比较{" foo":null} = {" foo":null}将返回NULL,这是假的(除非它被用作表达式IS NULL) 。由于它不会重复数值。