Mongodb 控制查询返回字段

这篇具有很好参考价值的文章主要介绍了Mongodb 控制查询返回字段。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用关系型数据库时,用户在select命令后添加字段名称控制返回字段。mongodb中也支持对查询返回字段的控制。默认返回文档的所有字段。为了限制返回数据量,提高网络传输速率。用户可以通过投射(projection)来指定返回字段或在返回结果中排除一些字段。

构建测试集合

与本系列其他文章一样,首先构建测试集合。插入测试集合的文档,包含字符串类型的字段item和status, 嵌套文档类型字段size,文档数组类型字段instock.

//删掉已有集合
//db.inventory.drop()
//创建新的集合
db.inventory.insertMany( [
  { item: "journal", status: "A", size: { h: 14, w: 21, uom: "cm" }, instock: [ { warehouse: "A", qty: 5 } ] },
  { item: "notebook", status: "A",  size: { h: 8.5, w: 11, uom: "in" }, instock: [ { warehouse: "C", qty: 5 } ] },
  { item: "paper", status: "D", size: { h: 8.5, w: 11, uom: "in" }, instock: [ { warehouse: "A", qty: 60 } ] },
  { item: "planner", status: "D", size: { h: 22.85, w: 30, uom: "cm" }, instock: [ { warehouse: "A", qty: 40 } ] },
  { item: "postcard", status: "A", size: { h: 10, w: 15.25, uom: "cm" }, instock: [ { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ] }
]);

返回匹配文档的所有字段

当用户并未向mongodb查询语句指定任何投射规则时,默认返回所有字段。

下面的语句返回字段status是A的所有文档字段

db.inventory.find({status: 'A'})

返回指定字段和_id字段

通过添加投射规则,用户可以显示的指定字段的返回规则。在投射规则中,当字段名称后面指定为1时,该字段会被返回。当向字段指定为0时,该字段不会返回。_id字段,默认返回。

投射规则的语法如下

db.collection.find(
	{ //定义查询条件
    <field_name>: <value>,
    ...
  },
	{ //定义投射规则,设定字段是否返回
    <field_name>: <0 or 1>,
    ...
  }
)

下面语句中,返回item、status和_id字段

db.inventory.find({status: 'A'},{item: 1, status: 1})

隐藏_id字段

_id字段默认是显示的,需要隐藏字段时,需要显示的在投射规则中添加_id:0

如只返回item和status字段

db.inventory.find({status: 'A'},{item: 1, status: 1, _id: 0})

在此查询语句中,定义了三个投射规则,item, status两个字段显示,_id字段隐藏。Mongodb在使用中规定,除了_id字段外,定义投射规则时,不能同时定义字段显示和隐藏。如用户只能定义item和status字段全部显示的{item: 1, status: 1}。不能定义item显示,status字段隐藏的规则{item: 1, status: 0}。而用户只能控制_id字段的隐藏,如{item: 1, status: 1, _id: 0}

隐藏某些字段

如前面描述,为字段名称指定0值时,隐藏该字段。该字段在查询结果中不会返回。

如查询中不返回status和instock字段

db.inventory.find({status: 'A'},{status: 0, instock: 0})

控制内嵌文档字段的显示和隐藏

与查询过滤文档一直,用户可以使用点操作符,构建嵌套字段路径,指定嵌套文档中字段的显示和隐藏。如下面的语句中,显示size文档中的uom字段

db.inventory.find({status: 'A'}, {item: 1, status: 1, "size.uom": 1})

同样,不使用点号,写成内嵌文档的方式,也是支持的。

db.inventory.find({status: 'A'}, {item: 1, status: 1, size: {uom: 1}})

而隐藏某些字段,只要将投射中的1改成0集合。

db.inventory.find({status: 'A'}, {size: {uom: 0}})

控制文档数组中字段的显示和隐藏

与嵌套文档操作类似,使用点操作符也可以控制文档数组中字段的显示和隐藏。

如下面的语句中,返回字段item, status, 和数组instock中文档的字段qty

db.inventory.find({status: 'A'}, {item: 1, status: 1, size: {uom: 1}, "instock.qty": 1})

除了控制文档字段显示以外, 使用投影,借助投影操作符,还可以控制数组元素的返回。详见后续文档。文章来源地址https://www.toymoban.com/news/detail-817221.html

到了这里,关于Mongodb 控制查询返回字段的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 保存mongodb数据时出现_class字段,应该如何去掉

    配置如下: application.yml文件内容如下 公共类如下 IBasicDao类: 其实现类BasicDao内容如下 实体类(Article)如下 服务实现类(ArticleServiceImpl) 控制类(ArticleController) 成功插入数据后 发现多了个_class字段,解决办法如下 新建配置类(MongoConfig) 结果如下 失败案例: 新建配置

    2024年02月22日
    浏览(44)
  • 【数据库MongoDB】MongoDB与大数据关系以及MongoDB中重要的进程:mongod进程与mongo进程关系

    云计算的定义有多种说法,对于到底什么是云计算,我们至少可以找到100种解释。目前广为接受的是美国国家标准与技术研究院定义: 云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问,进入可配置的计算资源共享池(资源包括网络、服务器

    2024年02月02日
    浏览(70)
  • 〖Python 数据库开发实战 - MongoDB篇⑧〗- MongoDB的数据结构

    订阅 Python全栈白宝书-零基础入门篇 可报销! 白嫖入口-请点击我。 推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V! 说明:该文属于 Python全栈白宝书专栏, 免费阶段订阅数量4300+ , 购买任意白宝书体系化专栏可加入 TFS-CLUB 私域社区。 福利:加入社区的小伙

    2023年04月09日
    浏览(92)
  • MongoDB——MongoDB删除系统自带的local数据库

    1.1、linux环境进入mongo客户端 输入 mongo 命令,进入命令行客户端 进入admin库,并登录,查看所有数据库 提升用户权限,然后进入local库并删除local库 然后重新进入admin库,把提升的用户权限降回,再次查看所有数据库 由上图可知,local库已被删除。

    2024年02月06日
    浏览(56)
  • [虚幻引擎 MongoDB Client 插件说明] DTMongoDB MongoDB数据库连接插件,UE蓝图可以操作MongoDB数据库增删改查。

    本插件可以在UE里面使用蓝图操作MongoDB数据库, 对数据库进行查询,删除,插入,替换,更新操作。 插件下载地址在文章最后。 Create MongoDB Client - 创建客户端对象 创建一个 MongoDB 客户端对象。 Connect By Url - 连接到数据库 Url :MongoDB的连接地址。 如 mongoDB://account:password@ip:

    2024年02月14日
    浏览(96)
  • python mongodb数据查询

    要在Python中执行MongoDB查询,需要使用MongoDB的官方Python驱动程序——PyMongo。首先,您需要安装PyMongo,然后连接到MongoDB数据库,执行查询操作。 安装PyMongo: 使用PyMongo连接到MongoDB 如果MongoDB需要用户名和密码进行身份验证,请使用PyMongo的MongoClient构造函数提供这些凭据来连接

    2024年02月07日
    浏览(33)
  • MongoDB数据库从入门到精通系列文章之:MongoDB数据库百篇技术文章汇总

    MongoDB数据库系列文章持续更新中: 更多数据库内容请阅读博主数据库专栏,数据库专栏涵盖了Mysql、SQLServer、PostgreSQL、MongoDB、Oracle、Cassandra等数据库 数据库专栏 文章名称 文章链接 数据库安装部署系列之:部署Mongodb5.0.6高可用集群详细步骤 数据库安装部署系列之:部署M

    2024年02月11日
    浏览(59)
  • 基于MongoDB的空间数据存储与查询

    MongoDB 中使用 GeoJSON对象 或 坐标对 描述空间地理数据。MongoDB使用 WGS84 参考系进行地理空间数据查询。 1、MongoDB支持空间数据的存储,数据类型需要限制为GeoJSON; 2、MongoDB可以为GeoJSON类型数据建立索引,提升空间查询的效率; GeoJSON 对象格式 GeoJSON 对象有两个filed,分别是 ty

    2024年02月11日
    浏览(27)
  • 整理mongodb文档:find方法查询数据

    整理mongodb文档:find方法查询数据 求关注,求批评,求指出,如果哪儿不清晰,请指出来,谢谢 如题,本文讲的是如何用find查询数据,如何在数组、字段、对象中查询,以及‘或’等查询操作,最后讲了一些参数。依旧是在shell下操作。 查询数据是db操作中很重要的一步,而

    2024年02月13日
    浏览(35)
  • MongoDb数据库

    1.显示所有数据库: show dbs 2.切换到指定数据库,如果没有则自动创建数据库 use databaseName 3.显示当前所在数据库 db 4.删除当前数据库 use 库名 db.dropDatabase() 1.创建集合 db.createCollection(\\\'集合名称\\\') 2.显示当前数据库中所有集合 show colletions  3.删除某个集合 db.xxx.drop(); 4.重命名集

    2024年02月04日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包