下面的查询更新许多带有聚合管道的版本在v4.2中均可使用
db.AlertPreferences.updateMany({}, [
{
$match: {
$expr: {
$or: [
{ $ne: ["$preferences.MCN-ONE", null] },
{ $ne: ["$preferences.MCN-TWO", null] },
{ $ne: ["$preferences.MCN-THREE", null] }
]
}
}
},
{
$addFields : {
preferences: {
$mergeObjects: [
{ "MCN-ONE": "$preferences.MCN-ONE" },
{ "MCN-TWO": "$preferences.MCN-TWO" },
{ "MCN-THREE": "$preferences.MCN-THREE" }
]
}
}
}
])
如何修改此查询以使其在v3.6中运行,其中具有聚合管道功能的updateMany不可用?
//更新 这是基于@prasad _
的建议的框架查询db.collection.aggregate([
{
$match: {
$expr: {
$or: [
{ $ne: ["$preferences.MCN-ONE", null] },
{ $ne: ["$preferences.MCN-TWO", null] },
{ $ne: ["$preferences.MCN-THREE", null] }
]
}
}
}
]).forEach(doc =>db.preferences.updateOne({ _id: doc._id }, {
$set : {
preferences: {
$mergeObjects: [
{ "MCN-ONE": "$preferences.MCN-ONE" },
{ "MCN-TWO": "$preferences.MCN-TWO" },
{ "MCN-THREE": "$preferences.MCN-THREE" }
]
}
}
}))
但是它没有更新文档。知道有什么问题吗? 这是post的跟进活动。
例如,这是文档
{
"_id" : ObjectId("5d721f5296eaaafd1df263e8"),
"assetId" : "ALL",
"createdTime" : ISODate("2019-09-06T08:56:50.065Z"),
"default" : false,
"lastUpdatedTime" : ISODate("2019-09-06T09:11:35.463Z"),
"platformFleetOrgId" : "A7A33DA4C5CE4DEFBA7E4AFA5CC9D0EE",
"platformPreferenceId" : "F015049C075E4B1E80A1BF52F5EC3A20",
"platformUserId" : "686102DBD5B241D3B2165381CBFD3FC8",
"preferences" : {
"MCN-TWO" : [
"ALERTLIST"
],
"MCN-ONE" : [
"MOBILEPUSH",
"ALERTLIST",
"WEBPUSH"
],
"MCN-THREE" : [
"ALERTLIST"
],
"CCC-ALARM" : [
"MOBILEPUSH"
],
"SSD-ALARM" : [
"MOBILEPUSH"
],
"TFT-ALARM" : [
"MOBILEPUSH",
"ALERTLIST"
],
"REC-WARN" : []
},
"solutionContext" : "mfm"
}
运行查询后,我期望得到以下结果。
{
"_id" : ObjectId("5d721f5296eaaafd1df263e8"),
"assetId" : "ALL",
"createdTime" : ISODate("2019-09-06T08:56:50.065Z"),
"default" : false,
"lastUpdatedTime" : ISODate("2019-09-06T09:11:35.463Z"),
"platformFleetOrgId" : "A7A33DA4C5CE4DEFBA7E4AFA5CC9D0EE",
"platformPreferenceId" : "F015049C075E4B1E80A1BF52F5EC3A20",
"platformUserId" : "686102DBD5B241D3B2165381CBFD3FC8",
"preferences" : {
"MCN-TWO" : [
"ALERTLIST"
],
"MCN-ONE" : [
"MOBILEPUSH",
"ALERTLIST",
"WEBPUSH"
],
"MCN-THREE" : [
"ALERTLIST"
]
},
"solutionContext" : "mfm"
}