【发布时间】:2021-06-24 11:40:22
【问题描述】:
我有一个 Couchbase 存储桶“企业”文档,例如:企业列表,如 Listing_HomeDepot、listing_Lowes、listing_DansHardware。
每个 Listing_* 文档都有一个字段 businessInfo,其中包含同一存储桶中另一个文档的部分键。例如,listing_DansHardware 有 "businessInfo": "3a4tg",应该有一个文档的 key info_3a4tg。文档 info_3a4tg 有一个“id”字段,其中包含“3a4tg”。
假设 Dans Hardware 关闭并且 info_3a4tg 文档被删除。我想选择存储桶中的所有企业,但过滤掉所有具有孤立企业信息引用的企业。
我试过了: select * from business b1 where b1.category='hardware' and exists (select * from business b2 use keys 'info_'||b1.businessInfo)
但这没有用。我收到一些“文档键必须是字符串”错误。有什么建议吗?
【问题讨论】:
-
这些答案有帮助!所以奇怪的是,即使 N1QL 结果的 allRows 包含我想要的所有文档,警告/错误包含很多相同的“文档键必须是字符串:
”警告/错误。我在调试 N1QL 结果时看到了这一点。因此,即使我得到了我需要的文档,我也担心在后台会发生很多低效的事情。我将在下一条评论中分享调试输出。其中有 5679 个,但为简洁起见,我在评论中截断了它们。 -
N1qlQueryResult{ status='success', finalSuccess=true, parseSuccess=true, allRows=[ { ..
.. }, .., , .., { .. .. } ],签名={“”:“”},info=N1qlMetrics{ resultCount=100,errorCount=0,warningCount=5679,...},profileInfo={},errors=[{“msg ": "文档键必须是字符串: ", "code": 0 }, ..., { "msg": "文档键必须是字符串: ", "code": 0 } ], ... }