Couchbase n1qlQuery Удалить с подзапросом

У меня одно ведро содержит 2 типа объектов: первое:

{
  "id": "123"
  "objectNamespace": "a",
  "value": "value1"
}

второй:

{
  "id": "234",
  "objectNamespace": "b",
  "value": "value2",
  "association": ["123"]
}

теперь я хочу удалить документ из типа a, только если НЕ имеет никаких ассоциаций из типа b:

Я пробую это:

 DELETE FROM `bukcet_name` 
  WHERE objectNamespace = 'a' 
   AND id = "123" 
   AND NOT EXISTS (
          SELECT * 
            WHERE ANY item IN bukcet_name.association 
                  SATISFIES item = "123" END);

НО это всегда удаляет документ с идентификатором 123. Как я могу это сделать?


person igreenfield    schedule 11.08.2016    source источник


Ответы (1)


Есть несколько несоответствий между вашими данными и вашим запросом.

(1) Вам не хватает предложения FROM.

(2) Вы используете ассоциации вместо ассоциации.

(3) имя_ведра.

Вот возможный запрос.

DELETE FROM `bucket_name` 
  WHERE objectNamespace = 'a' 
   AND id = "123" 
   AND NOT EXISTS (
          SELECT * FROM bucket_name b2
            WHERE ANY item IN b2.association
                  SATISFIES item = "123" END);
person geraldss    schedule 11.08.2016
comment
Вы проверили свое предложение? это даже не компилируется? - person igreenfield; 15.08.2016
comment
Компилируется и работает у меня. Я удивлен, если вы не понимаете этикета обращения за помощью и ее получения. - person geraldss; 19.08.2016