MongoDB投影有$slice如何只顯示該字段

簡單的投影

稍微用過MongoDB的都知道,投影很簡單,就直接code

db.student.find({_id:ObjectId('5a5085aed8f10c1a6cc0395b')},{comments: 1})

添加$slice的投影

然而,當我要給comments分頁($slice)如何作呢?對象

錯誤的作法

如下給出了錯誤的作法原理

db.student.find({_id:ObjectId('5a5085aed8f10c1a6cc0395b')},{comments: 1, comments:{$slice:[0,1]}})

這樣寫的話,就只有分頁,而後字段顯示所有分頁

緣由
對象中,同名字段,後者會覆蓋前者。因此{comments: 1, comments: {$slice:[0,1]}}中實際生效的只有comments:{$slice:[0,1]}
同理,若是兩個調換位置變成{comments: {$slice:[0,1]}, comments: 1},那麼實際生效的就是comments: 1沒有分頁db

正確的寫法

多寫一個隨意的字段(不跟已有的字段已有)能夠作到,具體原理求告知co

db.student.find({_id:ObjectId('5a5085aed8f10c1a6cc0395b')}, {comments:{$slice:[0,1]},  xxx:1})

簡單的投影

稍微用過MongoDB的都知道,投影很簡單,就直接錯誤

db.student.find({_id:ObjectId('5a5085aed8f10c1a6cc0395b')},{comments: 1})

添加$slice的投影

然而,當我要給comments分頁($slice)如何作呢?

錯誤的作法

如下給出了錯誤的作法

db.student.find({_id:ObjectId('5a5085aed8f10c1a6cc0395b')},{comments: 1, comments:{$slice:[0,1]}})

這樣寫的話,就只有分頁,而後字段顯示所有

緣由
對象中,同名字段,後者會覆蓋前者。因此{comments: 1, comments: {$slice:[0,1]}}中實際生效的只有comments:{$slice:[0,1]}
同理,若是兩個調換位置變成{comments: {$slice:[0,1]}, comments: 1},那麼實際生效的就是comments: 1沒有分頁

正確的寫法

多寫一個隨意的字段(不跟已有的字段已有)能夠作到

db.student.find({_id:ObjectId('5a5085aed8f10c1a6cc0395b')}, {comments:{$slice:[0,1]},  xxx:1})

_id怎麼樣都會顯示,隨意亂寫很差,統一用_id吧

db.student.find({_id:ObjectId('5a5085aed8f10c1a6cc0395b')}, {comments:{$slice:[0,1]},  _id:1})

原理

被slice的字段必定會顯示,加上其餘的字段(例如_id),固然就會進行投影篩選~

相關文章
相關標籤/搜索