如何仅在Couchbase中获取父级文档[关闭]

问题描述 投票:-1回答:1
任何人都可以帮助我解决此查询如何使用Couchbase N1ql查询获取父文档结果]

{ "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" ] }

couchbase n1ql
1个回答
2
投票
如果只想从原始文档中删除main_parts。

选项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;

© www.soinside.com 2019 - 2024. All rights reserved.