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
Publicado : 5 April, 2018 @ 06:46
¿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.
Publicado : 5 April, 2018 @ 07:06
Sí. Actualizar solo b_display_tag
Publicado : 5 April, 2018 @ 07:12
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"}
]);
Publicado : 5 April, 2018 @ 07:40
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);
}
});
Publicado : 5 April, 2018 @ 07:52