我有这样的文档结构:
{
"_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
?
答案 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);
}
});