Ниже моя коллекция
[{documentId: 123, id: uniqueValue }]
Ожидаемый результат
[{documentId: 123, id: id1,uniqueKey: uniqueValue }]
Как мне ссылаться на столбец "id" для текущих обновлений записей, также столбцом id может быть все, для чего мой внешний запрос дает мне имя столбца
db.supplier.updateMany( { documentId : 123}, { $set: { "uniqueKey": id} } );
, поэтому в вышеприведенном запросе "id" идет наподобие externalObject.mapping.idColumn, которое я хочу заменить в вышеприведенном запросе.
Весь смысл в том, чтобы создать индекс по столбцу, а текущая коллекция не имеет фиксированного имени столбца, по которому я хочу запустить запрос
Пример
Существует две коллекции collectionOne и collectionTwo для каждая документ в коллекцииОдно в коллекции несколько документов. docId используется для поиска.
collectionOne
[{
docId :123,
col1 : lookupColumn
metaData: "some metaData",
extra : "extra columns"
}, ... ]
collectionTwo
[{
docId :123,
lookupColumn:"1",
a:"A",
b:"B" ....
},
{ docId :123,
lookupColumn:"2",
a:"A",
b:"B" ....
}
{ docId :123,
lookupColumn:"3",
a:"A",
b:"B" ....},.....]
lookupColumn в collectionTwo может иметь другое имя и отображение это имя задается в collectionOne полем col1 (которое всегда одинаково), в этом примере значение col1 равно lookupColumn , поэтому я хочу создать столбец newKey и скопируйте в него значение lookupColumn .
Итак, я обнаружил ниже Query
db.collectionOne.find({}).forEach(function(obj) {
if(obj.columns) {
existingColumn =obj.columns.col1;
db.collectionTwo.updateMany( { docId: obj.docId}, { $set: { "newKey": existingColumn} } );
}
}
Проблема в том, что я не могу выбрать имя существующего столбца, используя переменную существующиеColumn Я также попытался использовать $, который вставляет $ "существующий столбец" в качестве значения newKey.
Я обновил запрос еще одним l oop поверх collectionTwo, но я чувствую, что оптимизирован и ненужен.