## Document

    {
    	'_id': ObjectId('5ec72ffe00316be87cab3927'),
    	'code': Code('function () { return 22; }'),
    	'binary': BinData(1, '232sa3d323sd232a32sda3s2d3a2s1d23s21d3sa'),
    	'dbref': DBRef('namespace', ObjectId('5ec72f4200316be87cab3926'), 'db'),
    	'timestamp': Timestamp(0, 0),
    	'long': NumberLong(9223372036854775807),
    	'decimal': NumberDecimal('1000.55'),
    	'integer': 100,
    	'maxkey': MaxKey(),
    	'minkey': MinKey(),
    	'isodate': ISODate('2012-01-01T00:00:00.000Z'),
    	'regexp': RegExp('prism(js)?', 'i'),
    	'string': 'Hello World',
    	'numberArray': [1, 2, 3],
    	'stringArray': ['1','2','3'],
    	'randomKey': null,
    	'object': { 'a': 1, 'b': 2 },
    	'max_key2': MaxKey(),
    	'number': 1234,
    	'invalid-key': 123,
    	noQuotesKey: 'value',
    }

## Query

    db.users.find({
    	_id: { $nin: ObjectId('5ec72ffe00316be87cab3927') },
    	age: { $gte: 18, $lte: 99 },
    	field: { $exists: true }
    })

## Update

    db.users.updateOne(
    	{
    		_id: ObjectId('5ec72ffe00316be87cab3927')
    	},
    	{
    		$set: { age: 30 },
    		$inc: { updateCount: 1 },
    		$push: { updateDates: new Date() }
    	}
    )

## Aggregate

    db.orders.aggregate([
    	{ $sort : { age : -1 } },
    	{ $project : { age : 1, status : 1, name : 1 } },
    	{ $limit: 5 }
    ])