在MongoDB中,可以使用projection(查询时选择的字段)和exclusion(查询时排除的字段)来控制查询结果中显示的字段。
如果想要从嵌套的字段中排除某些字段,可以使用点符号 (.)来访问嵌套的子字段。例如,假设有一个名为'users”的集合,其中每个文档都有一个名为'profile”的嵌套字段,该字段又嵌套了一个名为'address”的字段,则可以使用以下代码'profile.address.city”字段排除在查询结果之外:
db.users.find({}, { "profile.address.city": 0 })
这将返回包含所有文档,但不包括嵌套字段'profile.address.city”。
如果要同时排除多个嵌套字段,可以使用以下代码:
db.users.find({}, { "profile.address.city": 0, "profile.address.postcode": 0 })
这将排除嵌套字段'profile.address.city”和'profile.address.postcode”。
要选择性地返回嵌套字段,可以使用以下代码:
db.users.find({}, { "profile.address.city": 1 })
这将只选择嵌套字段'profile.address.city”。
请注意,projection和exclusion不能同时使用,而且在选择字段时,如果想要选择嵌套字段的某个子字段,则需要将嵌套字段名称和子字段名称用点号分隔开。
此外,可以使用$elemMatch运算符来选择嵌套的数组类型字段中的子元素。例如,假设'users”集合中每个文档都有一个名为'orders”的嵌套数组字段,该数组包含已发布订单的详细信息,则可以使用以下代码来选择嵌套数组中所有价格为10.00的订单:
db.users.find({ "orders": { $elemMatch: { "price": 10.00 } } })
这将返回包含所有文档,但仅包括嵌套的'orders”数组中所有价格为10.00的订单。