Я пытаюсь работать с массивами. Это какой-то рабочий код, который объясняет, что я делаю.MarkLogic 8 JavaScript Массивы
// query
var a = ["1000", "2000", "3000"];
var b = ["2000"];
for (i in b) {
var index = a.indexOf(b[i]);
};
if (index > -1) {
a.splice(index, 1);
};
a
Теперь, когда я использую эту же логику для результатов моего запроса, она больше не работает.
// query
queryDo = cts.andQuery([
cts.jsonPropertyValueQuery("displayable", "true"),
cts.jsonPropertyValueQuery("section", "dikw Track Events"),
cts.jsonPropertyValueQuery("name", 'dikw_default'),
cts.collectionQuery(["reference/application"])
]);
queryDont = cts.andQuery([
cts.jsonPropertyValueQuery("displayable", "false"),
cts.jsonPropertyValueQuery("section", "dikw Track Events"),
cts.jsonPropertyValueQuery("name", 'Helpdesk'),
cts.collectionQuery(["reference/application"])
]);
var qDo = cts.jsonPropertyWords("code", null, "document", queryDo).toArray();
var qDont = cts.jsonPropertyWords("code", null, "document", queryDont).toArray();
for (i in qDont) {
var index = qDo.indexOf(qDont[i]);
};
if (index > -1) {
qDo.splice(index, 1);
};
qDo
Я проверил, что результатом обоих запросов является массив. Массивы состоят из значений, подобных примерному коду; 1000, 2000 и т. Д. Кроме того, когда я использую notAndQuery для исключения результатов из второго запроса из первого, это не влияет.
Например, когда я смотрю на qDo [2], возвращается правильное значение.
Мои andNotQuery:
queryDo = cts.andQuery([
cts.jsonPropertyValueQuery("displayable", "true"),
cts.jsonPropertyValueQuery("section", "dikw Track Events"),
cts.jsonPropertyValueQuery("name", 'dikw_default'),
cts.collectionQuery(["reference/application"])
]);
queryDont = cts.andQuery([
cts.jsonPropertyValueQuery("displayable", "false"),
cts.jsonPropertyValueQuery("section", "dikw Track Events"),
cts.jsonPropertyValueQuery("name", 'Helpdesk'),
cts.collectionQuery(["reference/application"])
]);
andnot = cts.andNotQuery(queryDo, queryDont);
result = cts.jsonPropertyWords("code", null, "document", andnot);
Я изменить свой код, чтобы отразить изменения для петли на массив б. Также включен мой andNotQuery. – Thijs
Я думаю, что ваш запрос andNot должен быть более избирательным. У вас есть запрос коллекции как в queryDo, так и в queryDont. Таким образом, с помощью andNotQuery вы получаете 'сбор ref/app, а не сбор ref/app' .. :) – grtjn
разница в этой строке: cts.jsonPropertyValueQuery (« name »,« Helpdesk ») Я протестировал запросы en 1 возвращает 1000, 2000, 3000, а другая возвращает 2000. Результат с использованием andNot по-прежнему остается всей первой последовательностью. – Thijs