在 SQL 查询中排除某个字段或将其设为 Null
Exclude a certian field or make it Null inside a AQL query
我有问题。我有一个 collection orders
。我想获取所有文档和所有字段,除了 metaData
中的字段 dataOriginSystem
。
是否可以选择排除此值或使其为空?
SELECT * EXCEPT(ColumnNameX, [ColumnNameY, ...])
FROM TableA
这是我的 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',
},
]
AQL
FOR doc IN orders RETURN doc
我想要类似的东西
FOR doc IN orders RETURN doc WITHOUT metaData_dataOriginSystem
FOR doc IN orders RETURN doc AND metaData_dataOriginSystem = NULL
所以返回的文档没有字段metaData_dataOriginSystem
或者字段应该是Null
我要的(其他字段应该都有!)
[
{'_id': 'orders/213123',
...
'isCompleteDelivery': False,
'metaData': {<Removed>,
'dataOriginWasCreatedTime': '10:12:12',},
...
},
OR
{'_id': 'orders/12323',
...
'isCompleteDelivery': False,
'metaData': {'dataOriginSystem': Null,
'dataOriginWasCreatedTime': '10:12:12',},
...
},
]
使用UNSET()
or UNSET_RECURSIVE()
.
UNSET(document, attributeName1, attributeName2, ... attributeNameN) → doc
从文档中删除属性 attributeName1
到 attributeNameN
。将保留所有其他属性。
FOR doc IN orders RETURN UNSET( doc, "orderData", "dataOriginSystem")
如果要删除嵌套值,您需要Merge
FOR doc IN orders RETURN MERGE(doc, {metaData: UNSET(doc.metaData, "dataOriginSystem")})
我有问题。我有一个 collection orders
。我想获取所有文档和所有字段,除了 metaData
中的字段 dataOriginSystem
。
是否可以选择排除此值或使其为空?
SELECT * EXCEPT(ColumnNameX, [ColumnNameY, ...])
FROM TableA
这是我的 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',
},
]
AQL
FOR doc IN orders RETURN doc
我想要类似的东西
FOR doc IN orders RETURN doc WITHOUT metaData_dataOriginSystem
FOR doc IN orders RETURN doc AND metaData_dataOriginSystem = NULL
所以返回的文档没有字段metaData_dataOriginSystem
或者字段应该是Null
我要的(其他字段应该都有!)
[
{'_id': 'orders/213123',
...
'isCompleteDelivery': False,
'metaData': {<Removed>,
'dataOriginWasCreatedTime': '10:12:12',},
...
},
OR
{'_id': 'orders/12323',
...
'isCompleteDelivery': False,
'metaData': {'dataOriginSystem': Null,
'dataOriginWasCreatedTime': '10:12:12',},
...
},
]
使用UNSET()
or UNSET_RECURSIVE()
.
UNSET(document, attributeName1, attributeName2, ... attributeNameN) → doc
从文档中删除属性 attributeName1
到 attributeNameN
。将保留所有其他属性。
FOR doc IN orders RETURN UNSET( doc, "orderData", "dataOriginSystem")
如果要删除嵌套值,您需要Merge
FOR doc IN orders RETURN MERGE(doc, {metaData: UNSET(doc.metaData, "dataOriginSystem")})