MongoDB 在项目查询中选择"替换"



我的MySQL表是这样的:

CREATE TABLE `table_1` (
`id` int(11) NOT NULL,
`name` varchar(100) NOT NULL,
`status` int(11) NOT NULL,
`date_added` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `table_1` (`id`, `name`, `status`, `date_added`) VALUES
(1, 'CNN', 1, '2018-07-01 00:00:01'),
(2, 'BBC', 1, '2018-07-03 00:00:01'); 

我的 MySQL 查询是这个

SELECT REPLACE(name, 'C','A') as name FROM `table_1` order by name ASC 

SQL 结果如下:

Name:
ANN
BBC

我的 mongodb 表是这样的:

db.table_1.insertMany( [
{ id: "1", name: "CNN", status: true, date_added: '2018-07-01 00:00:01' },
{ id: "2", name: "BBC",  status: true, date_added: '2018-07-03 00:00:01' }
]);

我正在尝试如下聚合:

db.table_1.aggregate([
{
$project: {
_id:true,
name:true
}
},
])

我想要输出ANN,BBC。 这里CNN应该转换为ANN

好问题。MongoDB没有为此提供运算符,但这可以通过以下聚合管道来实现。:)

但是,我建议您这样做客户端。

[
{
"$addFields": {
"newName": {
"$reduce": {
"input": {
"$map": {
"input": {
"$range": [
0,
{
"$strLenCP":"$name"
}
]
},
"in": {
"$let": {
"vars": {
"char": {
"$toLower": {
"$substrCP": [
"$name",
"$$this",
1
]
}
}
},
"in": {
"$cond": [
{
"$eq": [
"$$char",
"c"
]
},
"A",
{
"$toUpper":"$$char"
}
]
}
}
}
}
},
"initialValue":"",
"in": {
"$concat": [
"$$value",
"$$this"
]
}
}
}
}
}
]

最新更新