Skip to content

Instantly share code, notes, and snippets.

@eugene-goldberg
Created June 27, 2015 03:17
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save eugene-goldberg/ee694ee7ee6121fbec46 to your computer and use it in GitHub Desktop.
Save eugene-goldberg/ee694ee7ee6121fbec46 to your computer and use it in GitHub Desktop.
update and/or insert a nested document
app.post('/salesforce_update', function(req, res){
console.log('Salesforce DC update Request Received');
console.log('request body: ' + req.body);
MongoClient.connect(url, function (err, db) {
if (err) {
console.log('Unable to connect to the mongoDB server. Error:', err);
} else {
var collection = db.collection('SalesforceData');
var matchingRecords;
collection.update(
{
CSCOpportunityID: req.body.opportunityId
},
{$set:
{
OpportunityName: req.body.opportunityName,
AccountName: req.body.accountName,
SolutionExecutiveName: req.body.solutionExecutiveName,
SolutionArchitectName: req.body.solutionArchitectName
}
},
{upsert:true},
function(err, result){
if(err){
console.log('err: ' + err);
}
else{
console.log('update result: ' + result);
}
});
collection.find(
{
CSCOpportunityID: req.body.opportunityId,
"DataCenters.DataCenterName": req.body.dcName
}
).toArray(function(err, docs) {
if(err){
console.log('err: ' + err);
}
//console.log(docs);
//res.json(docs);
assert.equal(null, err);
if(docs.length === 0){
var m = 0;
collection.update(
{
CSCOpportunityID: req.body.opportunityId
},
{
$addToSet:
{
DataCenters:
{
"DataCenterName": req.body.dcName,
"DCCountry": req.body.dcCountry,
"DCSiteCode": req.body.dcSiteCode,
"DCSKU": req.body.dcSku,
"kwFY16": req.body.kwRequired_2016,
"kwFY17": req.body.kwRequired_2017,
"kwFY18": req.body.kwRequired_2018,
"kwFY19": req.body.kwRequired_2019,
"kwFY20": req.body.kwRequired_2020,
"kwFY21": req.body.kwRequired_2021,
"kwFY22": req.body.kwRequired_2022,
"kwFY23": req.body.kwRequired_2023,
"kwFY24": req.body.kwRequired_2024,
"kwFY25": req.body.kwRequired_2025,
"cbFY16": req.body.cbRequired_2016,
"cbFY17": req.body.cbRequired_2017,
"cbFY18": req.body.cbRequired_2018,
"cbFY19": req.body.cbRequired_2019,
"cbFY20": req.body.cbRequired_2020,
"cbFY21": req.body.cbRequired_2021,
"cbFY22": req.body.cbRequired_2022,
"cbFY23": req.body.cbRequired_2023,
"cbFY24": req.body.cbRequired_2024,
"cbFY25": req.body.cbRequired_2025,
cloudCompute: req.body.cloudCompute,
bizCloudHc: req.body.bizCloudHc,
bizCloud: req.body.bizCloud,
storageAsAService: req.body.storageAsAService,
mainframe: req.body.mainframe,
unixFarm: req.body.unixFarm,
windowsFarm: req.body.windowsFarm,
as400: req.body.as400,
myWorkstyle: req.body.myWorkstyle,
cyber: req.body.cyber,
serviceManagement: req.body.serviceManagement,
lan: req.body.lan,
wan: req.body.wan
}
}
},
function(err, result){
if(err){
console.log('err: ' + err);
}
else{
console.log('update result: ' + result);
res.send(201);
}
});
}
else {
var p = 0;
collection.update(
{
CSCOpportunityID: req.body.opportunityId,
"DataCenters.DataCenterName": req.body.dcName
},
{$set:
{
"DataCenters.$.kwFY16": req.body.kwRequired_2016,
"DataCenters.$.kwFY17": req.body.kwRequired_2017,
"DataCenters.$.kwFY18": req.body.kwRequired_2018,
"DataCenters.$.kwFY19": req.body.kwRequired_2019,
"DataCenters.$.kwFY20": req.body.kwRequired_2020,
"DataCenters.$.kwFY21": req.body.kwRequired_2021,
"DataCenters.$.kwFY22": req.body.kwRequired_2022,
"DataCenters.$.kwFY23": req.body.kwRequired_2023,
"DataCenters.$.kwFY24": req.body.kwRequired_2024,
"DataCenters.$.kwFY25": req.body.kwRequired_2025,
"DataCenters.$.cbFY16": req.body.cbRequired_2016,
"DataCenters.$.cbFY17": req.body.cbRequired_2017,
"DataCenters.$.cbFY18": req.body.cbRequired_2018,
"DataCenters.$.cbFY19": req.body.cbRequired_2019,
"DataCenters.$.cbFY20": req.body.cbRequired_2020,
"DataCenters.$.cbFY21": req.body.cbRequired_2021,
"DataCenters.$.cbFY22": req.body.cbRequired_2022,
"DataCenters.$.cbFY23": req.body.cbRequired_2023,
"DataCenters.$.cbFY24": req.body.cbRequired_2024,
"DataCenters.$.cbFY25": req.body.cbRequired_2025,
"DataCenters.$.DCCountry": req.body.dcCountry,
"DataCenters.$.DCSiteCode": req.body.dcSiteCode,
"DataCenters.$.DCSKU": req.body.dcSku,
"DataCenters.$.cloudCompute": req.body.cloudCompute,
"DataCenters.$.bizCloudHc": req.body.bizCloudHc,
"DataCenters.$.bizCloud": req.body.bizCloud,
"DataCenters.$.storageAsAService": req.body.storageAsAService,
"DataCenters.$.mainframe": req.body.mainframe,
"DataCenters.$.unixFarm": req.body.unixFarm,
"DataCenters.$.windowsFarm": req.body.windowsFarm,
"DataCenters.$.as400": req.body.as400,
"DataCenters.$.myWorkstyle": req.body.myWorkstyle,
"DataCenters.$.cyber": req.body.cyber,
"DataCenters.$.serviceManagement": req.body.serviceManagement,
"DataCenters.$.lan": req.body.lan,
"DataCenters.$.wan": req.body.wan
}
},
{upsert:true},
function(err, result){
if(err){
console.log('err: ' + err);
}
else{
console.log('update result: ' + result);
res.send(201);
}
});
}
//db.close();
});
}
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment