我们已经更新了我们的用户集合,将firstName
、lastName
作为2键,而不是fullName
,但是我们有超过400个用户被创建为fullName
。我可以使用MongoDB Atlas UI手动创建400个firstName
、lastName
键,但这将花费很长时间。
我可以使用mongo来(a)将fullName
按空格拆分,以及(b)将名称设置为拆分数组中的第一个值(在第一个空格之前的所有内容),以及(c)将姓氏设置为拆分数组中第一个空格之后的所有内容。John Smith
将分为John
和Smith
,John Smith Jr.
将被拆分为John
和Smith Jr.
。这能在芒果壳里做吗?
发布于 2021-07-05 00:47:10
使用mongo执行此一次活动。
db.User.find({}).forEach(function(doc) { // loop over all the records
if (doc.fullName && doc.fullName.split) {
var name = doc.fullName.split(' ');
if (name && name.length) {
doc.firstName = name[0];
if (name[1]) doc.lastName = name[1];
// delete doc.fullName;
db.User.save(doc); // save back the record
}
}
});
发布于 2022-03-17 10:50:33
改进Tuchar的回答,将剩余的名称实际放在姓氏中,并且也不使用不推荐的.save()
db.User.find({}).forEach(function(doc) {
if (doc.fullName && doc.fullName.split) {
const parts = doc.fullName.split(' ');
db.User.updateOne({_id: doc._id}, {$set: {
firstName: parts.shift(1),
lastName: parts.join(' ')
}});
}
});
https://stackoverflow.com/questions/68249540
复制相似问题