[DOCS-9591] Docs for SERVER-13447: provide $projection operator to get type of field Created: 05/Dec/16  Updated: 08/Dec/17  Resolved: 08/Dec/17

Status: Closed
Project: Documentation
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Task Priority: Major - P3
Reporter: Emily Hall Assignee: Unassigned
Resolution: Duplicate Votes: 0
Labels: delete-docs-tickets, expression
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Documented
documents SERVER-13447 provide $projection operator to get t... Closed
Participants:
Days since reply: 6 years, 9 weeks, 5 days ago

 Description   

Engineering Ticket Description:

Syntax

{$type: "$fieldName"}

Examples

Input

{_id: NumberLong(4)}

Pipeline

db.coll.aggregate([{
    $project: {
        _id: {$type: "$_id"}
    }
}])

Output

{_id: "long"}

Additional Notes

  • Type names will match the query $type operator.
  • Note in a query, the $type will try to match elements inside of an array, so a {$type: 'array'} will only match nested arrays. This will not be the case in aggregation. The type of an array will be 'array'.
  • Adding a $in expression (SERVER-6146) and a $switch expression (SERVER-10689) should make it easier to tell if something is numeric.

Original Description

If there was an equivalent of $type field (it can return bson type number or something else) it would be highly useful to do appropriate processing only if a field is a particular type.

For example, without knowing if a field is always an array, it's possible to get an error trying to $unwind or to get $size - if you could

{$project: {typeOfFoo:{$type:"$foo"}}}

you could now do different processing/operations depending on whether type is an array or not, or if it's a string vs number vs date, etc.



 Comments   
Comment by Kay Kim (Inactive) [ 08/Dec/17 ]

bulk closing duplicate tickets created after work was done.

Generated at Thu Feb 08 07:58:43 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.