Eliminar elementos específicos de la matriz con MongoDB

Estoy desarrollando una aplicación web usando Codeigniter y MongoDB. Los usuarios pueden subir archivos y otros usuarios pueden comentar sobre ellos.

Guardo los comentarios en una matriz llamada comentarios en el documento principal del archivo. Esto está bien, pero ¿cómo puedo eliminar comentarios específicos de la matriz?

No puedo usar ID como clave ya que un usuario puede agregar múltiples comentarios. ¿Cómo recomendarías que pueda hacerlo?

Esta es mi matriz de comentarios:

"comments": [ { "user_id": ObjectId("4f240b433dc7937d68030000"), "user_name": "james", "user_comment": "This is a comment", "created_at": "2012-01-2821: 20: 44" }, { "user_id": ObjectId("4f240b433dc7937d68030000"), "user_name": "mandy", "user_comment": "This is another comment", "created_at": "2012-01-2821: 31: 07" } ], 

Si puede identificar el elemento de comentario haciendo coincidir ID de usuario, nombre o comentario, puede eliminar ese comentario utilizando el comando update() con el modificador $pull junto con la condición correspondiente.

Si no puede hacer lo anterior, incluya una identificación única en los comentarios (como UUID ).

Para eliminar el comentario, haga lo siguiente:

 db.coll.update({}}} ) 

Si usa la identificación, que es preferible:

 db.coll.update({}}} ) 

quizás puedas eliminar el comentario por su created_atcreated_at ‘, ya que la hora es única.

 $db.coll.update({cond to identify document},{$pull:{'comments':{'created_at':<>}}}) 

Creo que has agregado el id de mongodb a cada comentario cuando lo insertas. Puedes crear una nueva ID de mongodb como esta;

 $comment_id = new MongoID(); 

Ahora puede eliminar los comentarios por id con $ pull + $ update como la respuesta de @ smoorthy.