MongoDB查询后返回指定字段

默认情况下,MongoDB查询会返回匹配文档中的所有字段。为了限制MongoDB发送给应用大量的无关数据,你可以通过db.collection.find(query,projection)方法来指定或限制要返回的字段。
在没设置projection参数时,查询会返回查询到的文档中的所有字段。例如test集合中添加下面的文档,有5个字段:_iditemstatussizeinstock字段,其中instock字段为数组。

db.test.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 } ] }
]);

使用db.test.find({item:"postcard"})命令,会得到如下图所示的结果:
在这里插入图片描述

返回指定的字段

也叫做包含模式,它指定返回的键,而不返回其他的键。具体是将projection中返回的字段指定为1,就可以实现返回指定的字段。例如db.test.find({item:"postcard"},{status:1}),会返回两个字段:_id,status。其中_id字段是默认返回。
在这里插入图片描述
如果不想返回_id字段,只需要将projection中的_id字段值设置为0。例如:db.test.find({item:"postcard"},{status:1,_id:0})
在这里插入图片描述

限制要返回的字段

也叫排除模式,它指定不返回的键,而返回其他键。具体是将projection中字段值设置为0即可,例如,查询结果文档中的status字段不显示,则使用命令:db.test.find({item:"postcard"},{status:0})
在这里插入图片描述
注意: 上面两种模式不能混用,因为这样的话,MongoDB就无法推断其他键是否应该返回。即projection中的字段值,要么全是1,要么全是0。但是_id字段是个特例,在包含模式下,_id字段可以为0

限制数组中返回的内容

使用$slice字段来定义,例如返回postcard匹配文档中的除了status的其他字段,并且instock字段只返回正序排列为1的内容。命令如下:db.test.find({item:"postcard"},{status:0,instock:{$slice:1}})
在这里插入图片描述

参考文章:

  1. Project Fields to Return from Query
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值