zoukankan      html  css  js  c++  java
  • MongoDB投影有$slice如何只显示该字段

    简单的投影

    稍微用过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})
    

    简单的投影

    稍微用过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),当然就会进行投影筛选~

  • 作者:小新是也
  • 链接:http://www.cnblogs.com/chenchuxin
  • 来源:博客园
  • 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
查看全文
  • 相关阅读:
    SpringBoot(三)SpringApplication启动类准备阶段
    SpringBoot(四)SpringApplication启动类运行阶段 SpringApplicationRunListener
    201871010104陈园园 《面向对象程序设计(java)》第八周学习总结 陈园园
    201871010104陈园园 《面向对象程序设计(java)》第十周学习总结 陈园园
    201871010104陈园园 《面向对象程序设计(java)》第四周学习总结 陈园园
    201871010104陈园园 《面向对象程序设计(java)》第二周学习总结 陈园园
    《2019面向对象程序设计(java)课程学习进度条》 陈园园
    201871010104陈园园 《面向对象程序设计(java)》第七周学习总结 陈园园
    201871010104陈园园 《面向对象程序设计 (java)》第一周学习总结 陈园园
    201871010104陈园园 《面向对象程序设计(java)》第六——七周学习总结 陈园园
  • 原文地址:https://www.cnblogs.com/chenchuxin/p/8254149.html
  • Copyright © 2011-2022 走看看