如何计算 certian collection 中字段 x 为空的文档数量?

How do I count of how many documents the field x is empty inside a certian collection?

我有问题。我有一个 collection orders。我想检查字段 phone 有多少文档是空的。

那么我如何计算 collection orders 中字段 phone 为空的文档数量?

这是我的 collection orders:

[
{'_id': 'orders/213123',
 'contactEditor': {'name': 'Max Power',
  'phone': '1234567',
  'email': 'max@power.com'},
 'contactSoldToParty': {'name': 'Max Not',
  'phone': '123456789',
  'email': 'maxnot@power.com'},
 'isCompleteDelivery': False,
 'metaData': {'dataOriginSystem': 'Goods',
  'dataOriginWasCreatedTime': '10:12:12',},
 'orderDate': '2021-02-22',
 'orderDateBuyer': '2021-02-22',
},
{'_id': 'orders/12323',
 'contactEditor': {'name': 'Max Power2',
  'phone': '1234567',
  'email': 'max@power.com'},
 'contactSoldToParty': {'name': 'Max Not',
  'phone': '123456789',
  'email': 'maxnot@power.com'},
 'isCompleteDelivery': False,
 'metaData': {'dataOriginSystem': 'Goods',
  'dataOriginWasCreatedTime': '10:12:12',},
 'orderDate': '2021-02-22',
 'orderDateBuyer': '2021-02-22',
 },
]

如果您尝试 FILTER 的值是 null...

FOR o IN orders
    FILTER o.contactSoldToParty.phone == null
    RETURN o

但是如果你只是想要一个简单的计数,那么我会使用 COLLECT(参见 docs)...

FOR o IN orders
    COLLECT hasPhone = (o.contactSoldToParty.phone != null) WITH COUNT INTO total
    RETURN { hasPhone, total }

有两个注意事项,都与文档的结构有关:

  1. 您可能必须先检查 contactSoldToParty 属性是否存在(或使用 nullish coalescing
  2. 确保phone属性确实是empty/missing/null - null不等于空字符串('')