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?