Я пытаюсь обновить массив, чтобы показать, что маршрутизатор работает, используя утверждение true или false.
Но я получаю ответ, что «запись обновлена», но я не вижу изменений в коллекции MongoDB.
Это моя функция, которую я запускаю
exports = async function({ body }) {
const data = JSON.parse(body.text());
const ACAS_Mission = data.ACAS_Mission;
const terminal = data.terminals[0].terminal;
const router = data.terminals[0].XLESS.router;
const comstat = context.services
.get("mongodb-atlas")
.db("Comstat")
.collection("comstat");
// Find the document
const filter = { ACAS_Mission, "terminals.terminal": terminal };
const document = await comstat.findOne(filter);
console.info("Document:", JSON.stringify(document));
// Update the document
const updateFilter = { ACAS_Mission, "terminals.terminal": terminal };
const update = { $set: { "terminals.$[t].XLESS.router": router } };
const options = { arrayFilters: [{ "t.terminal": terminal }] };
const result = await comstat.updateOne(updateFilter, update, options);
console.info("Update result:", JSON.stringify(result));
return { message: "Record updated." };
};
и это документ, который я пытаюсь обновить
Тело JSON, которое я передаю, когда делаю PUT
{
"ACAS_Mission": "xx53583",
"terminals": [
{
"terminal": "SNN573330",
"XLESS": {
"router": true
}
}
]
}
Результат обновления: {"matchedCount":0,"modifiedCount":0} Итак, в моих журналах я показываю, что он хочет выполнить функцию PUT, но все соответствует моему текущему документу.
Как вы написали в своем комментарии, MongoDB обрабатывает запрос, но изменений нет. Это означает, что ничто в вашей базе данных не соответствует вашему запросу (как можно сделать вывод из того, что matchedCount
равно 0).
Проверьте свой запрос: на скриншоте видно, что terminals
содержит массив, содержащий другой массив, содержащий объект. Вы ищете массив, непосредственно содержащий объект, поэтому добавление скобок вокруг оператора может сработать.
Удалось изменить тело JSON и несколько исправлений функций, и это работает!
{
"ACAS_Mission": "xx53583",
"terminals": [
[
{
"terminal": "SNN573330",
"NodeID": 251,
"XLESS": {
"router": false
}
}
]
]
Ты всегда возвращаешься
{message: "Record updated"}
. Просто чтобы убедиться, вы действительно просматриваете вывод консоли, а не сообщение?