[英]Mongodb Insert dynamic unique keys to nested object add if not exist else update
我需要操作與 $addtoset 對 mongodb 中的數組的工作方式相同的操作,但對於對象,我將動態生成的對象添加到對象中。 動態鍵基於一個字符串,該字符串將有助於保持唯一值,因此不會使用相同的動態鍵插入另一個鍵。
我試過 $set 實際更新
const update = {
$set: {
'resources.defs.icons': {
[md5(iconURL)]: {
persist: persist,
iconURL: iconURL,
iconName: _.get(iconData, 'iconName')
}
}
}
};
這是我更喜歡的結果
"resources": {
"defs": {
"icons": {
"c1b79846875970da7ee9cc5b1f9cc4ad": {
"persist": true,
"iconURL": "URL",
"iconName": ""
}
},
{
"28b569d3f9a3e63f94ca6fad969475f9": {
"persist": true,
"iconURL": "imageUrl",
"iconName": ""
}
}
}
}
如果對象鍵存在則更新,如果不存在則插入新鍵。 這就是我為數組實現的方式,
const update = {
$addToSet: {
'resources.defs.icons': {
[md5(iconURL)]: {
persist: persist,
iconURL: iconURL,
iconName: _.get(iconData, 'iconName')
}
}
}
};
現在我需要你的幫助來實現這個目標。 謝謝!
您非常接近解決方案,只需要進行一些更改:
const update = {
$set: {
[`resources.defs.icons.${md5(iconURL)}`]: {
persist: persist,
iconURL: iconURL,
iconName: _.get(iconData, 'iconName')
}
}
};
我找到了這個解決方案,
const dynamicResourcePath = `resources.defs.icons.${md5(iconURL)}`;
const update = {
$set: {
[dynamicResourcePath]: {
persist: persist,
iconURL: iconURL,
iconName: _.get(iconData, 'iconName')
}
}
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.