首页 > mongodb > basic > 14.MongoDB查询返回指定字段

14.MongoDB查询返回指定字段

MonoDB查询默认返回文档的全部字段. 你可以指定返回字段.

1 初始化数据

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

2 mongodb只返回指定字段和_id字段

可以通过将<field>字段设置为1, 来指定返回字段. 默认会返回_id字段.

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

对应的SQL语句:

SELECT _id, item, status from inventory WHERE status = "A"

3 mongodb查询结果去掉_id字段

可以通过将指定<field>字段设置为0, 来排除指定字段.

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

对应的SQL语句:

SELECT item, status from inventory WHERE status = "A"

4 mongodb查询结果返回不包含指定字段

你可以通过设置<field>字段设置为0, 来排除指定字段.

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

_id字段是个例外, 除了_id字段外, 不同同时指定包含和排除的数据. 只能选择其中一种方式.

5 mongodb查询内嵌文档返回指定字段

可以通过.操作符来返回指定字段.

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

6 mongodb查询返回数组中指定数组对象

MongoDB提供了: $elemMatch, $slice, and $. 操作符来返回指定数组数据.

以下示例通过$slice操作符返回数组中最后一个数据.

db.inventory.find( { status: "A" }, { name: 1, status: 1, instock: { $slice: -1 } } )

$elemMatch, $slice, and $这三个操作符是唯一的方式来指定返回数组中的数据, 你不能指定数组索引来返回数组中的数据.例如{ "instock.0": 1 }不会返回数组中的第一个元素.

7 参考文章

https://docs.mongodb.com/manual/tutorial/project-fields-from-query-results/

8 相关文章

MongoDB中文文档

转载请保留原文链接.