{
"created_at": "2020-03-26T15:50:12.318Z",
"created_by": 1,
"deleted_at": "",
"frm21_submit": null,
"id": "6cb51519-7c6b-499d-8a8d-3c85658605fc",
"machine_category_id": [
"7a2eb767-faca-4762-b65b-2db9e1992c82",
"259a4bcc-feb5-4d98-88c5-b331316e19be"
],
"main_parts": [
{
"data": {
"deleted_at": "777",
"frm21_submit": null,
"manufacturing_date": "03/31/2020",
"model": "234234234",
"photo": null,
"serial_number": "324324234",
"updated_at": "2020-03-31T14:11:48.909Z"
},
"id": "66354d7c-4769-4f3b-914e-bb841191e323"
}
]
}
我希望仅产生仅父文档的字段都是动态的,因此我无法选择字段。
{ "created_at": "2020-03-26T15:50:12.318Z", "created_by": 1, "deleted_at": "", "frm21_submit": null, "id": "6cb51519-7c6b-499d-8a8d-3c85658605fc", "machine_category_id": [ "7a2eb767-faca-4762-b65b-2db9e1992c82", "259a4bcc-feb5-4d98-88c5-b331316e19be" ] }
选项1:选择所需的字段。您提到这是不可能的。
选项2:选择文档中的所有字段并将项目MISSING设为您不希望的字段
SELECT d.*, MISSING AS main_parts
FROM default AS d;
选项3:从对象的字段中删除,如果需要,请使用对象函数https://docs.couchbase.com/server/current/n1ql/n1ql-language-reference/objectfun.html#object_remove进行级联>
SELECT OBJECT_REMOVE(d,"main_parts").* FROM default AS d;
选项4:如果您需要删除很多字段,请使用重构对象
SELECT OBJECT v.name:v.val FOR v IN OBJECT_PAIRS(d) WHEN v.name NOT IN ["main_parts"] END.* FROM default AS d;
选项5:如果字段是对象,则需要删除
SELECT OBJECT v.name:v.val FOR v IN OBJECT_PAIRS(d) WHEN v.val IS NULL OR ISOBJECT(v.val) = false END.* FROM default AS d;
选项5:基于值类型
SELECT OBJECT v.name:v.val FOR v IN OBJECT_PAIRS(d) WHEN type(v.val) IN ["null", "boolean", "number", "string", "array", "object"] END.* FROM default AS d;