如何在Mongoose的populate查询中生成名字首字母加姓氏格式?
Mongoose查询中生成首字母缩写格式的姓名
你可以借助MongoDB的字符串操作符实现首字母加姓氏的格式,以下是两种可行方案:
方案一:兼容多数MongoDB版本(使用$substrCP)
通过$substrCP提取名字的第一个字符,再拼接英文句号、空格和姓氏:
populate("reviews.userid", { name: { $concat: [ { $substrCP: ["$firstname", 0, 1] }, ". ", "$lastname" ] } })
$substrCP的参数分别是目标字段、起始索引(从0开始)和截取长度,这里取firstname的第一个字符,再和". "、lastname拼接成目标格式。
方案二:适用于MongoDB 5.0+版本(使用$first+$split)
如果你的MongoDB版本在5.0及以上,可以用$split把名字拆分为单个字符的数组,再用$first取首字符:
populate("reviews.userid", { name: { $concat: [ { $first: { $split: ["$firstname", ""] } }, ". ", "$lastname" ] } })
这种写法更直观,$split将firstname按空字符串拆分后得到单个字符的数组,$first提取数组第一个元素,再完成后续拼接。
两种方案都能实现输入Mary Khan时输出M. Khan的效果。
内容的提问来源于stack exchange,提问作者D. Rattansingh
相关产品推荐
相关产品推荐

