MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

So aktualisieren Sie ein Array von Unterdokumenten in einer MongoDB-Sammlung in MeteorJS

Es ist wichtig, sich daran zu erinnern, dass der Modifikator nur ein Objekt ist. Das folgende Objektliteral:

{
  a: 1, b: 1,
  a: 2, b: 2
}

wird ausgewertet zu:

{ a: 2, b: 2 }

weil die Schlüssel doppelt vergeben werden und der letzte Schreibvorgang gewinnt.

In Ihrem Code gilt die gleiche Idee für $addToSet und $inc Schlüssel. Um es zu beheben, schreiben Sie Ihr update so:

Ideas.update("bKXXrpYmppFBfq9Kx", {
  $addToSet: {
    score: { userId: someUser._id, score: 1 },
    votedOnBy: someUser._id
  },
  $inc: {
    overallScore: 1,
    timesVotedOn: 1
  }
});