Cadena dividida de MongoDB y actualización

Cadena dividida de MongoDB y actualización

Tengo una estructura de documento como esta:

{
    "_id" : ObjectId("5a3a77d9d274eb44bc85d7c8"),
    "b_id" : 3,
    "b_display_tag" : "Veg Curry, Non Veg Curry"
}

Puedo obtener el primer elemento de la cadena en b_display_tag usando una consulta dividida y agregada:

db.blogs.aggregate([
    {$project: {"b_display_tag": {$arrayElemAt:[{$split: ["$b_display_tag" , ","]}, 0]}}}
])

Resultado:

/* 1 */
{
    "_id" : ObjectId("5a3a77d9d274eb44bc85d7c8"),
    "b_display_tag" : "Veg Curry"
}

¿Cómo puedo actualizar b_display_tag en todo el documento con el primer elemento de la cadena separada por comas?

Mostrar la mejor respuesta

¿Puedes aclarar un poco sobre este How can I update b_display_tag in the whole document with above query?? Me gustaría saber que solo desea actualizar el campo b_display_tag o el documento completo.

Sí. Actualizar solo b_display_tag

Puede usar $out en el tubería de agregación para escribirlo en una nueva colección, ya que aquí necesitamos actualizar la colección existente blogs usa el mismo nombre de colección en $ fuera.

db.blogs.aggregate([
   {$project: 
      {
         _id:1,
         b_id:1,
         b_display_tag:{$arrayElemAt:[{$split:["$b_display_tag", ","]}, 0]}
      }
   },
   {$out:"blogs"}
 ]);

Utilice la siguiente consulta para actualizar b_display_tag. Dividirá b_tags usando el separador (') y actualizará b_display_tag con el primer índice.

db.blogs.find().forEach(function (blog) 
{
    if (blog.b_tags)
    {
        blog.b_display_tag=blog.b_tags.split(',');
        blog.b_display_tag=blog.b_display_tag[0];

        db.blogs.save(blog);
    }
});