【问题标题】:Why doesn't ARRAY_PUT dedupe objects with null properies?为什么 ARRAY PUT 不删除具有空属性的对象?
【发布时间】:2017-09-23 04:28:58
【问题描述】:

根据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 不对具有空属性的对象进行重复数据删除?

【问题讨论】:

    标签: couchbase n1ql nosql


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-21
      • 2020-01-18
      • 1970-01-01
      • 2016-11-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多