Server Started at Port 3000... { _id: new ObjectId("61c707e9f4ff040a47d27c3f"), username: 'adityaaryam', password: '1234', nameOfUser: 'Aditya Aryam', emailOfUser: 'adityaaryam@gmail.com', userAllLists: [ { name: 'Hello', items: [], _id: new ObjectId("61c70d915448262d1dca1a69") }, { name: 'Work', items: [], _id: new ObjectId("61c70d965448262d1dca1a70") }, { name: 'Home Work', items: [], _id: new ObjectId("61c70d9b5448262d1dca1a79") }, { name: 'Hello', items: [], _id: new ObjectId("61c70e7f5448262d1dca1a84") }, { name: 'Play', items: [], _id: new ObjectId("61c7126a5448262d1dca1a9b") }, { name: 'Eat', items: [], _id: new ObjectId("61c71325b0219e6ce4f57990") }, { name: 'Walla', items: [], _id: new ObjectId("61c7197de9564390d506cbe9") } ], __v: 7 }
Así es como se ve mi base de datos. Quiero empujar nuevos elementos a la matriz de "elementos" que está anidada dentro de la matriz "userAllLists" usando mangosta. ¿Cómo implemento esto?
He estado intentando findOneAndUpdate usando $push pero no puedo lograr mis resultados deseables.
Mis esquemas son los siguientes:
const itemSchema = { name: String }; const customListSchema ={ name:String, items:[itemSchema] }; const userSchema={ username: String, password: String, nameOfUser: String, emailOfUser: String, userAllLists: [customListSchema], };
¡Gracias de antemano!
Creo que $push
es la forma correcta de insertar nuevos elementos en matrices anidadas, no mostraste el código que intentaste para ver si funciona o no, aquí hay un ejemplo basado en tu esquema
User.update({_id: "61c707e9f4ff040a47d27c3f", }, { '$push': { "userAllLists.$[].items": {name: "test item name"} } });
Nota: las expresiones $[]
empujarán el objeto especificado dentro de todas las matrices de items
que existen en userAllLists
Para enviar el elemento solo para un objeto userAllLists
específico, puede usar la siguiente sintaxis
User.update({_id: "61c707e9f4ff040a47d27c3f", "usersAllLists._id": "61c70d915448262d1dca1a69"}, { '$push': { "userAllLists.$.items": {name: "test item name"} } });
esto garantizará enviar el objeto del elemento al objeto usersAllLists
especificado que tiene esta identificación 61c70d915448262d1dca1a69