MongoDB拆分字符串和更新

时间:2018-04-05 06:46:23

标签: database mongodb nosql

我有这样的文档结构:

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

我可以使用拆分和聚合查询从b_display_tag中的字符串中获取第一个元素:

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

结果:

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

如何使用逗号分隔字符串中的第一个元素更新整个文档中的b_display_tag

2 个答案:

答案 0 :(得分:0)

您可以使用$out中的aggregation pipeline将其写入新的集合,因为我们需要在$out中更新现有集合blogs使用相同的集合名称}。

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

答案 1 :(得分:0)

使用以下查询更新b_display_tag。它将使用separator(')拆分b_tags并使用第一个索引更新b_display_tag。

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);
    }
});