Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Couchbase 为什么';t数组\u放置具有空属性的重复数据消除对象?_Couchbase_N1ql_Nosql - Fatal编程技术网

Couchbase 为什么';t数组\u放置具有空属性的重复数据消除对象?

Couchbase 为什么';t数组\u放置具有空属性的重复数据消除对象?,couchbase,n1ql,nosql,Couchbase,N1ql,Nosql,根据: 数组\u PUT(表达式、值,…) 此函数返回一个新数组,如果值为 现在还没有。否则,它将返回未修改的输入 数组 但是我发现,如果值是一个具有null属性的对象,那么它永远不会匹配数组中的现有值 例如,以以下查询为例: SELECT ARRAY_PUT([{'foo': 0}], {'foo': 0}) 结果是: [{"foo": 0}] [{"foo": null}, {"foo": null}] 现在将属性更改为nul

根据:

数组\u PUT(表达式、值,…)

此函数返回一个新数组,如果值为 现在还没有。否则,它将返回未修改的输入 数组

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

例如,以以下查询为例:

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

[{"foo": 0}]
[{"foo": null}, {"foo": null}]
现在将属性更改为null:

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

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

为什么ARRAY_不使用null属性放置重复数据消除对象?

null表示未定义,{foo:null}={foo:null}的比较将返回null,该值为false(除非用作表达式is null)。因此,它不会删除重复值。

NULL表示未定义,{foo:NULL}={foo:NULL}的比较将返回NULL,该值为false(除非用作表达式为NULL)。因此,它不会重复删除值