I am trying to create a function to unlock leads that were locked before the specified time. I tested the updateMany function with an aggregation pipeline in the shell, but when trying to run it from a Realm Function I get an error...
StitchError: update: modifier argument must be an object
exports = function(){
const mongodb = context.services.get("mongodb-atlas");
const leads = mongodb.db("Dev").collection("leads");
const query = { lockDate: {$lte: new Date('2020-07-01T00:00:02.012Z')}, stage: "Lead" };
const update = [{ $set: {"previousOwner": "$owner", "locked": false}}, {$unset: ["owner", "lockDate"]}]
const options = { upsert: false };
return leads.updateMany(query, update, options).then(res => {
const { matchedCount, modifiedCount } = res;
console.log(`Successfully matched ${matchedCount} and modified ${modifiedCount} items.`);
return res;
}).catch(err => console.log(err));
};
Does updateMany accept aggregation pipelines in Realm? If it does did I make an error?
Hi Bernard – Updates within the aggregation pipeline are a pretty new feature in MongoDB (with 4.2) and we're in the process of supporting MQL up to MongoDB 4.4 in Realm Functions. We expect this to be released in the near future.