- त्रुटि कहती है
$map
काinput
$
. का उपयोग करके संदर्भ फ़ील्ड स्वीकार करता है साइन$version
, u
संलग्न करें अपडेट के लिए ऐरे ब्रैकेट में ऑब्जेक्ट एकत्रीकरण पाइपलाइन- बस दोनों फ़ील्ड
title
डालें औरversion
$map
. में $unset
आवश्यक नहीं है क्योंकि$map
in
. में पुराने डेटा को नए फ़ील्ड से बदल देगा
db.runCommand({
update: 'apps',
updates: [
{
q: { "versions.name": { $exists: true } },
u: [{
$set: {
versions: {
$map: {
input: "$versions",
in: {
"title": "$$this.name",
"version": "$$this.version"
}
}
}
}
}],
multi: true
}
]
})
दूसरा तरीका, अधिक गतिशील दृष्टिकोण के लिए
$mergeObjects
अंदर$map
, की-वैल्यू पेयर की मैन्युअल सूची को रोकने के लिए$unset
name
को हटाने का चरणversion
. से फ़ील्ड सरणी
db.runCommand({
update: 'apps',
updates: [
{
q: { "versions.name": { $exists: true } },
u: [
{
$set: {
versions: {
$map: {
input: "$versions",
in: {
$mergeObjects: [
"$$this",
{ "title": "$$this.name" }
]
}
}
}
}
},
{ $unset: "versions.name" }
],
multi: true
}
]
})