2016-12-21 5 views
0

Dieser Meteor-Server-Code versucht MongoDB Sammlung zu aktualisieren, sondern gibt Fehler:Mongo kann nicht aktualisiert werden 2 Werte zur gleichen Zeit

 let originalDoc = original.fetch()[0]; 
     Meteor.users.update(userId, { 
     $set: { 
      profile: originalDoc.profile, 
      cmpProfile: originalDoc.cmpProfile, 
      aaa: originalDoc.aaa 
     }, 
     $unset: { 
      'profile.abc': 1 
     } 
     }); 

Der Fehler:

Exception while invoking method 'xyz' MongoError: Cannot update 'profile' and 'profile.abc' at the same time

Irgendwelche Ideen? thx

Antwort

0

Der Fehler ist ziemlich selbsterklärend: Sie können nicht zur gleichen Zeit $set ganze profile und $unsetprofile.abc weil MongoDB nicht solche Operationen ermöglichen.

Statt $unset des Aufrufs können Sie delete originalDoc.profile.abc; tun, bevor Abfrage ausgeführt wird und effektiv abc Feld von profile entfernen, wie Sie ganze eingebettete Dokument zu setzen.

+0

löschen originalDoc.profile.abc? meinst du $ unset originalDoc.profile.abc? wenn nicht, wie lösche ich es? –

+0

Sie setzen das ganze 'originalDoc.profile' (d. H., Es wird ein existierendes ersetzt). Wenn das 'abc'-Feld nicht im Objekt vorhanden ist, wird es nicht in der Datenbank sein. Wenn Sie das Feld 'abc' nicht setzen, können Sie das überflüssige '$ unset' loswerden und die Abfrage wird problemlos ausgeführt. – malarzm

Verwandte Themen