的MongoDB(猫鼬)检索串
比方说,我有一些很长的职位博客。的MongoDB(猫鼬)检索串
所以,我想我的显示在“预览模式”的帖子列表,文本的情况下仅前50个字符。
答案很简单,要做到这一点:
Post.find(
(err, posts) => {
if(err) return console.log(err);
posts.forEach(
post => {
console.log('post preview:', post.data.substr(0,50) + '...');
}
)
}
)
这样我们检索特定集合中的所有数据。 如果每个帖子都有超过3 KB的数据检索,30个帖子在数据传输和处理方面似乎非常低效。
所以,我想知道如果有检索数据库已经切片的字符串的方法吗?
或者至少你对我的问题更好的解决方案?
是的,你可以使用$ SUBSTR运营商,这样的查询:
db.collection.aggregate(
[
{
$project:
{
preview: { $substr: [ "$data", 0, 50 ] }
}
}
]
)
编辑:
$ SUBSTR从MongoDB的3.4反对,因为它不仅拥有良好为ASCII字符串定义行为。如果你面对UTF-8的问题,考虑升级为使用$ substrCP操作 让你的查询变得MongoDB的3.4:
db.collection.aggregate(
[
{
$project:
{
preview: { $substrCP: [ "$data", 0, 50 ] }
}
}
]
)
截至今日,MongoDB的3.4仅可用于开发,但量产版应该很快被释放
OK,这个怎么样的错误:'MongoError:$ SUBSTR:无效的范围,结束索引是在UTF-8 character'的中间? –
@Lepta看到我的编辑 – felix
有['$ substr'(https://docs.mongodb.com/v3.2/reference/operator/aggregation/substr/)。 – robertklep