sql >> Database teknologi >  >> NoSQL >> MongoDB

Skub element ind i indlejrede array mongoose nodejs

I din forespørgsel bruger du positionsoperator ($-tegn) for at lokalisere en bestemt video efter _id, og så vil du skubbe et element til rapporter.

Problemet er, at MongoDB ikke ved, hvilken video du forsøger at opdatere, fordi den sti, du har angivet (seasons.episodes.videos.$.reports ) indeholder to andre arrays (sæsoner og episoder).

Som dokumentationen siger, kan du ikke bruge denne operatør mere end én gang

Denne begrænsning komplicerer din situation. Du kan stadig opdatere dine rapporter, men du skal kende nøjagtige indekser for ydre arrays. Så følgende opdatering ville være et fungerende eksempel:

db.movies.update({'seasons.episodes.videos._id': data._id}, {$push: {'seasons.0.episodes.0.videos.$.reports': data.details}})

Alternativt kan du opdatere en større del af dette dokument i node.js eller genoverveje dit skemadesign med tanke på teknologiske begrænsninger.




  1. Mongodb NoRM og POCO

  2. Pymongo-fejl for ArrayFilters til at opdatere flere underdokumenter

  3. Sådan sender du MongoDB-data til det indlejrede array ved hjælp af NODE.js og Express

  4. Returner kun specifikke felter fra projektion array underdokument