sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur man multiuppdatering av en kapslad array i MondoDB?

Det beror på att du använder $-operatorn:Den positionella $-operatorn identifierar ett element (inte multi) i en array för att uppdatera utan att explicit specificera elementets position i arrayen. För att projicera, eller returnera, ett arrayelement från en läsoperation, se $-projektionsoperatorn.

Du kan använda nedanstående kod för att göra det:

db.playground.find({
  $and: [
    {
      "TargetSegments.Colors": {
        $exists: true
      }
    },
    {
       "ProjectFileId": 1
    },
    {
      "SourceLanguageId": 2
    },
    {
      "TargetSegments": {
        $elemMatch: {
          "LanguageId": 1
        }
      }
    }
  ]
}).forEach(function(item)
{
    var targets = item.TargetSegments;

    for(var index = 0; index < targets.length; index++)
    {
        var target = targets[index];
        target.Segment = null,
        target.Colors= [],
        target.Widths= [],
        target.Heights= []
    }

    db.playground.save(item);
});



  1. Spark HBase Connector – ett år i översyn

  2. Node.js-återuppringning med MongoDB-uppdatering återkommer aldrig även om den uppdaterar DB

  3. Mongodb enkel prefixfråga med regex och sortering är långsam

  4. Hur skulle du modellera kund> order> ordertem> produkt i NoSql-databas?