MongoDB聚合中如何按字符限制字符串字段?
MongoDB 保留所有字段同时截取 Paragraph 内容到6个字符
你用$project时只指定了处理后的Paragraph字段,所以默认会过滤掉其他所有字段(除了_id,但你需要保留title,因此得调整写法)。要实现保留所有原有字段,同时把Paragraph截取为前6个字符,有两种实用方法:
方法1:在$project中显式保留需要的字段
$project默认只返回你指定的字段,所以需要把title等字段也显式声明保留,同时处理Paragraph:
{ $project: { title: 1, // 保留title字段 Paragraph: { $substr: ["$Paragraph", 0, 6] } // 截取前6个字符 } }
注:_id字段默认会被保留,不需要额外声明;如果要排除_id,才需要写_id: 0
方法2:用$addFields替换字段(更便捷)
$addFields会自动保留所有原有字段,仅替换或添加指定字段,不用逐个声明要保留的字段,更高效:
{ $addFields: { Paragraph: { $substr: ["$Paragraph", 0, 6] } } }
执行任意一种方法后,都会得到你想要的结果:
[ { "_id" : ObjectId("5e41877df4cebbeaebec5146"), "title": "this is a title", "Paragraph" : "My Nam" }, { "_id" : ObjectId("5e4187d7f4cebbeaebec5147"), "title": "this is a title", "Paragraph" : "David " } ]
内容的提问来源于stack exchange,提问作者Tribe56123
相关产品推荐
相关产品推荐

