title: DynamoDB attribute_exists doesn't work
body: <p>Banging my head for a couple hours with this and I can't understand why it's not working </p>
  
  <p>I have a DynamoDBv2 table (top level attributes are shown as separate columns) with items like these:</p>
  
  <pre><code>{
      gateway: 'gateway1',
      device_id: '2',
      state: { temperature: 20, humidity: 30, pressure: 101049 },
      timestamp: 1498331237261
  },
  {
      gateway: 'gateway1',
      device_id: '2',
      state: { temperature: 20, humidity: 30, pressure: 101049, lat: 2, long: 1 },
      timestamp: 1498331237262
  }
  </code></pre>
  
  <p>Primary partition key: <code>device_id</code> (String)</p>
  
  <p>Primary sort key: <code>timestamp</code> (Number)</p>
  
  <p>I'm trying to get the latest item for a certain device that has the attributes <code>lat</code> and <code>long</code>.</p>
  
  <pre><code>const docClient = new AWS.DynamoDB.DocumentClient();
  const id = 2;
  const params = {
      TableName: 'device_telemetry',
      KeyConditionExpression: 'device_id = :id',
      ProjectionExpression: '#s, #lat, #lng, #ts',
      FilterExpression: 'attribute_exists(#lat) AND attribute_exists(#lng)',
      ExpressionAttributeNames: {
          '#s': 'state',
          '#lat': 'state.lat',
          '#lng': 'state.long',
          '#ts': 'timestamp'
      },
      ExpressionAttributeValues: {
          ':id': id.toString()
      },
      ScanIndexForward: false,
          Limit: 1
      };
  
      const onResult = (res) =&gt; {
          console.info('devices res for: ', id, res);
      };
  
      console.info('query: ', params);
      docClient.query(params).promise().then(onResult);
  </code></pre>
  
  <p>If I use <code>attribute_exists(#s)</code>, then it works, but for <code>#lat</code> or <code>#long</code> it doesn't </p>
  
  <p>What am I doing wrong?  </p>