0
我目前正在尝试为我正在进行的项目做一些复杂的N1QL,理论上我可以在多次N1QL调用中完成所有这些处理,并且每次解析结果,但是如果可能的话,我想为了包含在一个调用中。可能在N1ql中链接结果?
我想要做的是:
- 过滤器包含有超过1个ID
- 在该列表中读回所有其它ID的“dataSync.test.id”字段中的所有文件
- 使用该列表以获得含有这些ID的其他文件
- 获取这些文件的“dataSync.test._channels”场(任选被DOCTYPE过滤器可能有助于解析)
这可能会返回一个“dataSync.test._channels”列表
在N1QL中这可能吗?看起来好像可能是这样,但是我无法正确地理解语法。
我的数据结构,看起来有点像
{
"dataSync": {
"test": {
"_channels": [
"RP"
],
"id": [
"dataSync_user_1015",
"dataSync_user_1010",
"dataSync_user_1005"
],
"_lastUpdatedBy": "TEST"
}
},
...
}
{
"dataSync": {
"test": {
"_channels": [
"RSD"
],
"id": [
"dataSync_user_1010"
],
"_lastUpdatedBy": "TEST"
}
},
...
}
到目前为止您尝试了哪些查询?我想你会能够做一个普通的旧的SQL子查询来获得这个。 – Kirk
我最终什么事是使用一对夫妇的查询和一些Java代码来赞美它: 读出的ID,不包括通过ID:从写 选择array_remove(dataSynchronization.trident.id,$ dataSyncId)作为IDLIST其中$ dataSyncId在dataSynchronization.trident.id和array_length(dataSynchronization.trident.id)> 1 然后,迭代ID列表并查询通道对象 从write中选择dataSynchronization.trident._channels其中docType ='user '和$ dataSyncId在dataSynchronization.trident.id和array_length(dataSynchronization.trident.id)<2“; – chiloutus
然后更新通道 ”update write set dataSync hronization.trident._channels = $ channels,“+ ”dataSynchronization.trident._lastUpdatedBy = $ lastUpdatedBy其中dataSynchronization.trident.id和array_length(dataSynchronization.trident.id)中的dataSyncId> 1“ 对不起,如果这是格式不好,我不想“回答”我自己的问题 – chiloutus