在MongoDB中,投影查詢主要用于指定返回文檔中的哪些字段或計算字段。投影查詢主要使用以下操作符:
$project
:用于指定返回的字段或計算字段??梢园侄蚊?、計算表達(dá)式或者字段路徑。
示例:
db.collection.find({}, { "name": 1, "_id": 0 }) // 返回文檔中的"name"字段,不返回"_id"字段
$addFields
/ $set
:用于向投影結(jié)果中添加新的字段或更新現(xiàn)有字段。
示例:
db.collection.find({}, { $addFields: { "age": 30 } }) // 添加新的"age"字段
db.collection.find({}, { $set: { "age": 30 } }) // 更新現(xiàn)有的"age"字段
$project
和 $addFields
/ $set
的組合使用可以實(shí)現(xiàn)更復(fù)雜的字段操作,例如計算字段的值、條件性地包含或排除字段等。
示例:
db.collection.find({}, { $project: { "name": 1, "age": 1, "_id": 0 }, $addFields: { "isAdult": { $gt: ["$age", 18] } } }) // 返回"name"、"age"字段,添加新的"isAdult"字段,表示是否成年
$expr
:用于在投影查詢中使用聚合表達(dá)式。
示例:
db.collection.find({}, { $project: { "name": 1, "isEvenAge": { $expr: { $eq: ["$age", { $mod: ["$age", 2] }] } } } }) // 返回"name"字段,添加新的"isEvenAge"字段,表示年齡是否為偶數(shù)
這些操作符可以組合使用,以實(shí)現(xiàn)更復(fù)雜的投影查詢需求。