Запросы Couchbase должны поддерживать любую строку для имени свойства в фильтре (where
предложение.)
Но приведенный ниже запрос не возвращает значений для любого из fieldNames
"7", "a", "#", "&", "", "?"
. Это работает для значений для fieldName
a
.
Обратите внимание, что я использую Java DSL API, а не N1ql напрямую.
OffsetPath statement = select("*").from(i(bucket.name())).where(x(fieldName).eq(x("$t")));
JsonObject placeholderValues = JsonObject.create().put("t", fieldVal);
N1qlQuery q = N1qlQuery.parameterized(statement, placeholderValues);
N1qlQueryResult result = bucket.query(q);
Но в моем сегменте есть каждый из этих JsonObjects, включая объекты с необычными именами свойств, как показано в нефильтрованном запросе:
{"a":"a"}
{"#":"a"}
{"&":"a"}
{"":"a"}
{"?":"a"}
Как мне избежать имен свойств или иным образом поддерживать эти допустимые имена в запросах?
(Этот вопрос относится к другому , но речь идет о значениях и об именах полей.)