I have a collection of documents whose schema contains an array property (e.g., let’s call it keys) that holds an array of strings.
However, I have since realized that this array is only ever going to contain 1 string or be empty, so I want to update all the documents in my collection such that instead of having an array property called ‘keys’, each one will have a string property called key that either has the value of keys[0] if keys[] contained an element, or undefined if keys[] was empty, and then I want to delete the keys property.
I know that I can use the $unset operator to get rid of the keys property at the end. My question is: for the part about setting a new property called key based on what keys contains – how do I specify it when using the $set operator?
I want to do something like the following:
myCollection.updateMany({}, [
{ $set: { key: "keys.0" ? "keys.0" : undefined } },
]);
and I am aware that the above syntax is of course wrong. What is the right syntax for this operation?