Hi,
Unfortunately, there is no official document for bulk operations using query objects, but they are supported.
You can check the method executeLabelTemplateLines() from WHSPrintLabels class:
...
//update wave labels
Query waveLabelQuery = new Query();
QueryBuildDataSource qbdsWaveLabel = waveLabelQuery.addDataSource(tableNum(WHSWaveLabel));
str rangeValue = con2Str(labelTranslator.getWaveLabelIdCon());
qbdsWaveLabel.addRange(fieldNum(WHSWaveLabel, WaveLabelId)).value(rangeValue);
Map fieldSetMap = new Map(Types::String, Types::String);
fieldSetMap.insert(fieldStr(WHSWaveLabel, WaveLabelHistoryRecId), any2Str(labelHistory.RecId));
Query::update_recordset(fieldSetMap, waveLabelQuery);
...
You can also right click the "update_recordset" method and choose "Find all references", then it will list other places where the method is used.
For the parameters, as you can see the first one that is a Map, will hold the field name and it will be mapped to a string value. The mapped value can be a scalar value, but can also use fields from other tables on the query.
It's also possible to use calculations, as you can see in the buildUpdateCalculationStrForBalances() method from CustBalanceList class:
private str buildUpdateCalculationStrForBalances(str _custTmpAccountSumQbdsName, FieldId _custTmpAccountSumField, str _agingCalculatedTmpQbdsName, FieldId _agingCalculatedTmpField)
{
return strFmt('%1.%3 %2.%4',
_custTmpAccountSumQbdsName,
_agingCalculatedTmpQbdsName,
fieldId2Name(tableNum(CustTmpAccountSum), _custTmpAccountSumField),
fieldId2Name(tableNum(CustVendAgingCalculatedTmp), _agingCalculatedTmpField));
}