在MongoDB中,投影查询主要用于指定返回文档中的哪些字段或计算字段。投影查询主要使用以下操作符:
$project
:用于指定返回的字段或计算字段。可以包含字段名、计算表达式或者字段路径。
示例:
db.collection.find({}, { "name": 1, "_id": 0 }) // 返回文档中的"name"字段,不返回"_id"字段
$addFields
/ $set
:用于向投影结果中添加新的字段或更新现有字段。
示例:
db.collection.find({}, { $addFields: { "age": 30 } }) // 添加新的"age"字段
db.collection.find({}, { $set: { "age": 30 } }) // 更新现有的"age"字段
$project
和 $addFields
/ $set
的组合使用可以实现更复杂的字段操作,例如计算字段的值、条件性地包含或排除字段等。
示例:
db.collection.find({}, { $project: { "name": 1, "age": 1, "_id": 0 }, $addFields: { "isAdult": { $gt: ["$age", 18] } } }) // 返回"name"、"age"字段,添加新的"isAdult"字段,表示是否成年
$expr
:用于在投影查询中使用聚合表达式。
示例:
db.collection.find({}, { $project: { "name": 1, "isEvenAge": { $expr: { $eq: ["$age", { $mod: ["$age", 2] }] } } } }) // 返回"name"字段,添加新的"isEvenAge"字段,表示年龄是否为偶数
这些操作符可以组合使用,以实现更复杂的投影查询需求。