2016-05-11 10 views
1

Ich habe folgende Mongo Unter DokumentMongoDB Update-Abfrage vorhandenes Feld in ein Array setzen

 

"location" : { 
     "zipCode" : "90670", 
     "lat" : "33.942669", 
     "lng" : "-118.074384", 
     "city" : "Santa Fe Springs", 
     "state" : "California", 
     "streetAddress" : "12131 Telegraph Road, 2nd Floor", 
    } 

Kann jemand mir empfehlen Update-Abfrage oder Knotenfunktion mongo das folgende Dokument

 

"location" : { 
     "zipCode" : "90670", 
     "city" : "Santa Fe Springs", 
     "state" : "California", 
     "streetAddress" : "12131 Telegraph Road, 2nd Floor", 
     "geo" : { 
      "type" : "Point", 
      "coordinates" : [ 33.942669 ,-118.074384 ] 
     } 
    } 

Antwort

0

Wenn Sie die node.js mongodb-Treiber verwenden, können Sie so etwas wie:

var firstQuery = { 


"zipCode" : "90670", 
    "city" : "Santa Fe Springs", 
    "state" : "California", 
    "streetAddress" : "12131 Telegraph Road, 2nd Floor" 
}; 

db.collection('yourCollection').find(firstQuery).toArray(function(err, results) { 
    if (err) return err; 
    results.forEach(function(record) { 
     var geo = { 
      "type" : "Point", 
     "coordinates" : [ record.lat ,record.lng ] 
     }; 

     var newRecord = { 
      zipCode: record.zipCode, 
      city: record.city, 
      state: record.state, 
      streetAddress: record.streetAddres, 
      geo: geo 
     }; 

     db.collection('yourCollection').update(record, newRecord, function(err) { 
      if(err) { 
       //do whatever you want with this 
      } 
     }); 
    }); 
}); 
+0

Auch können Sie so etwas wie db.collection.update tun ({x: 1}, {$ unset: {x: '', y: ''}, $ set: {punkt: {x: 1, y: 2}}}) vom Client. – LuisFMorales

0

möglich zu erhalten etwas tun wie:

var query = { 
    "zipCode" : "90670", 
    "city" : "Santa Fe Springs", 
    "state" : "California", 
    "streetAddress" : "12131 Telegraph Road, 2nd Floor" 
}; 

var operator = { 
    $unset: { 
    "lat" : "", 
    "lng" : "" 
    }, 
    $set: { 
     "geo" : { 
     "type" : "Point", 
     "coordinates" : [ 33.942669 ,-118.074384 ] 
     } 
    }  
}; 

var options = { 
    multi: true 
} 

db.yourCollection.update(query, operator, options); 

Dies betrifft alle Ihre Datensätze, die mit der Abfrage indee übereinstimmen d.

0

Diese Änderung kann nicht in einem einzigen Vorgang durchgeführt werden. Sie müssen zuerst das Dokument, das Sie ändern müssen, und dann das Dokument mit dem neuen Format aktualisieren.

Verwandte Themen