从查询返回的项目字段
默认情况下,MongoDB的查询语句返回匹配到文档的所有字段,为了限制MongoDB返回给应用的数据,可以通过projection文档来指定或限制返回的字段。
本文提供了使用mongo shell中db.collection.find()方法映射查询的案例。案例中使用的inventory集合数据可以通过下面的语句产生。
返回匹配文档中的所有字段
如果没有特别指定projection, db.collection.find()方法将会返回匹配文档的所有字段。
下面的案例返回inventory集合中status等于**"A"**的文档的所有字段。
上述操作等价于下面的标准SQL:
仅返回指定字段和_id字段
映射会返回在映射文档中显示设置为1的字段。
下面的案例返回所有检索到文档中item, status, _id三个字段。
上述操作等价于下面的标准SQL:
去除_id字段
可以通过在映射文档中将_id字段设置为0来从结果集中去除 _id字段,就像下面的例子:
上述操作等价于下面的标准SQL:
Note:
除_id字段外,不能在映射文档中同时使用包含和去除语句。
去除指定字段
可以使用映射来排除特定字段,而不是在匹配文档中列出要返回的字段。
下面的案例返回匹配文档中除status 和 instock 字段之外的所有字段:
Note:
除_id字段外,不能在映射文档中同时使用包含和去除语句。
返回嵌套文档中的指定字段
通过点号引用嵌套文档字段并且在映射文档中将该字段设置为1来实现返回嵌套文档中的指定字段。
下面的案例返回
_id字段(默认返回)
item字段
status字段
文档size中的uom字段
uom字段是size嵌套文档中的字段.
去除嵌套文档中的指定字段
通过点号引用嵌套文档字段并且在映射文档中将该字段设置为0来实现去除嵌套文档中的指定字段。
下面的案例返回匹配文档中除嵌套文档size中的uom字段外的所有字段。
映射数组中的嵌套文档的指定字段
通过使用点号来映射数组中嵌套文档的指定字段。
下面案例返回:
_id字段(默认返回)
item字段
status字段
数组字段instock中的嵌套文档中的qty字段
映射返回数组中指定的数组元素
对于数组字段,MongoDB 提供了以下用于操作数组的映射运算符:$elemMatch,$slice,$
下面的案例使用$slice映射操作符返回数组字段instock中最后的元素:
$elemMatch,$slice,$是将指定元素映射到返回数组中的唯一方法。
举个例子,不能使用数组下标来映射指定的数组元素。例如:**{ "instock.0": 1 }**映射不会用第一个元素来映射数组。
参考:
3323
原文链接:https://docs.mongodb.com/manual/tutorial/project-fields-from-query-results/
译者:张芷嘉
最后更新于