ArangoDB 如何计算某个集合中字段x为空的文档数?

p3rjfoxz  于 2022-12-09  发布在  Go
关注(0)|答案(1)|浏览(164)

我有一个问题。我有一个集合orders。我想检查有多少文档与字段phone是空的。
那么,如何计算orders集合中有多少个phone字段为空的文档呢?
这是我的收藏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',
 },
]
dxxyhpgq

dxxyhpgq1#

如果你想用FILTER来得到一个值...

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
1.确保phone属性确实为空/缺失/null -null与空字符串('')不同

相关问题