MongoDB:特定类型的仅项目字段

MongoDB:特定类型的仅项目字段,mongodb,types,projection,Mongodb,Types,Projection,MongoDB中是否有一种方法可以投影文档中具有特定类型的所有字段 例如,如果我有以下文档: { _id:5dde4c55c6c36b3bb4f5ad30, 姓名:“彼得”, 年龄:45,, 部门:“营销” } 我想说:只返回类型为string的字段。这样我就可以得到: { _id:5dde4c55c6c36b3bb4f5ad30, 姓名:“彼得”, 部门:“营销” } 您可以使用检查字段类型 $reduce使用$objectToArray 如果字段值类型为string,则检查条件,然后使用

MongoDB中是否有一种方法可以投影文档中具有特定类型的所有字段

例如,如果我有以下文档:

{
_id:5dde4c55c6c36b3bb4f5ad30,
姓名:“彼得”,
年龄:45,,
部门:“营销”
}
我想说:只返回类型为
string
的字段。这样我就可以得到:

{
_id:5dde4c55c6c36b3bb4f5ad30,
姓名:“彼得”,
部门:“营销”
}
您可以使用检查字段类型

  • $reduce
    使用
    $objectToArray
  • 如果字段值类型为
    string
    ,则检查条件,然后使用initialValue进行concat并返回
  • 返回值将是数组,我们需要使用
    $arrayToObject
  • $replaceWith
    将根目录替换为新返回的对象

db.collection.aggregate([
  {
    $replaceWith: {
      $arrayToObject: {
        $reduce: {
          input: { $objectToArray: "$$ROOT" },
          initialValue: [],
          in: {
            $concatArrays: [
              "$$value",
              {
                $cond: [
                  { $eq: [{ $type: "$$this.v" }, "string"] },
                  ["$$this"],
                  []
                ]
              }
            ]
          }
        }
      }
    }
  }
])