Выполняет левое внешнее соединение в незащищенном наборе в той же базе данных для фильтрации в документах из «объединенной» коллекции для обработки. Для каждого входного документа этап $ lookup добавляет новое поле массива, элементы которого являются соответствующими документами из «объединенной» коллекции. Эта стадия $ lookup передает эти измененные документы на следующий этап. Этап $ lookup имеет следующие синтаксисы:
Чтобы выполнить совпадение равенства между полем из входных документов с полем из документов «объединенной» коллекции, этап $ lookup имеет следующий синтаксис:
{
$lookup:
{
from: ,
localField: ,
foreignField: ,
as:
Операция будет соответствовать следующему выражению псевдо-SQL:
SELECT *,
Вы можете использовать nth0 / 4: например,
update_mat_rc(Mc,R,C,V,Mu) :-
nth0(R,Mc,Rc,Mt),
nth0(C,Rc,_,Rt),
nth0(C,Ru,V,Rt),
nth0(R,Mu,Ru,Mt).
?- update_mat_rc([[1,2,3],[4,5,6],[7,8,9]],1,1,x,M).
M = [[1, 2, 3], [4, x, 6], [7, 8, 9]].
Обратите внимание на порядок и имена переменных, передаваемых в nth0 / 4.
У меня есть суффиксы переменных с c (например, Mc
, Rc
) для обозначения тока , с t для обозначения временно [ 117], с и означает обновлено .