2017-03-28 4 views
0

dies auf einer vorhandenen mongodb Datenbank über Klemme Ran in aws EC2-Instanz gehostet:mongodb: Update-Abfrage auf eine Variable nimmt Änderungen auf eine andere Variable, die ein Array ist

db.users.update({},{ $inc: { point_total: 100 } }, {multi:true}) 

Zusätzlich zu steigenden variablen von 100 für alle Benutzer Es gab auch Eintragsänderungen in einer anderen Variablen (History) in derselben Sammlung.

Unerwünschte Änderungen umfassen die Ursache Variable innerhalb des Verlaufs wurde von "Empfangen" in "Gesendet" für verschiedene Benutzer geändert.

Da meine Anfrage nicht "Geschichte" angesprochen hat, gibt es Ideen, was das verursacht hat?

+0

Ihre Aktualisierungsabfrage bezieht sich nicht auf Änderungen im Protokollfeld. Sie haben auch nicht angegeben, welche Art von Änderungen Sie in der Historie haben. So ist es unmöglich zu erraten, was passiert ist –

+0

@SergeyBerezovskiy - Unerwünschte Änderungen beinhalten die Ursache Variable innerhalb der Geschichte wurde von "Empfangen" in "Gesendet" für verschiedene Benutzer geändert. –

Antwort

2

von $ inc Betreiber Dokumentation:

Die $ inc Betreiber ein Feld um einen bestimmten Wert erhöht und hat die folgende Form: { $inc: { <field1>: <amount1>, <field2>: <amount2>, ... } }

Verhalten

Wenn das Feld nicht vorhanden ist, $ inc erstellt das Feld und setzt das Feld auf den angegebenen Wert. Die Verwendung des Operators $ inc für ein Feld mit einem Nullwert erzeugt einen Fehler. $ inc ist eine atomare Operation innerhalb eines einzelnen Dokuments.

Wie Sie sehen können, besagt die Definition, dass der Operator $ inc nur angegebene Felder inkrementiert. Es gibt keine Hinweise auf mögliche Nebenwirkungen und Änderungen nicht spezifizierter Felder.

Das bedeutet, es gibt eine andere Abfrage (oder Abfragen), die history Feld aktualisieren. Möglicherweise tut dies Ihre Anwendung oder ein Dienst.

+0

Ja, ich habe die Dokumente zu Abfragen gelesen. Ich habe diese eine Abfrage oben nur manuell im Terminal ausgeführt. Dann habe ich PM2 für nodejs Server neu gestartet. Ich frage mich, ob das der Grund war. Oder wenn das "{multi: true}" Teil des Problems ist. Ich habe mich auch gefragt, ob es Probleme gibt, ich verstehe Eigenschaften mit Filialdokumenten in Arrays nicht. –

Verwandte Themen