sql >> Database >  >> NoSQL >> MongoDB

Mongodb:duw element naar geneste array als aan de voorwaarde is voldaan

Het probleem hier is dat je een paar dingen verkeerd begrijpt.

Wanneer u "outerArray.field.innerArray": { $in: [ 1, 3 ] } in uw zoekopdracht, krijgt u niet alleen innerArray waar heeft 1 of 3. U krijgt documenten waar deze arrays bestaan.

U zoekt dus het hele document op.

U moet arrayFilter gebruiken om waarden bij te werken wanneer het filter overeenkomt.

Dus, als ik je goed heb begrepen, is de vraag die je wilt:

db.collection.update(
{}, //Empty object to find all documents
{
  $push: { "outerArray.$[elem].field.innerArray": 4 }
},
{
  "arrayFilters": [ { "elem.field.innerArray": { $in: [ 1, 3 ] } } ]
})

Voorbeeld hier

Merk op hoe het eerste object in update is leeg. Je moet daar het veld plaatsen dat overeenkomt met het document (niet de array, het document).

Als u slechts één document wilt bijwerken, moet u het eerste object (queryobject) vullen met de gewenste waarden, bijvoorbeeld:{"_id": 11} .




  1. ik krijg de volgende foutmelding tijdens het verbinden met de mongodb-server

  2. 5 manieren om de maand van een datum te krijgen in MongoDB

  3. com.mongodb.MongoException:niet praten met master en nieuwe pogingen opgebruikt

  4. Converteer MongoDB BsonDocument naar geldige JSON in C#