2017-12-27 17 views
0

Ich verwende @awspilot/dynamodb, um Daten aus einer Kundentabelle abzurufen, wobei customer_id der Primärschlüssel ist.Mehrere E-Mail-ID aus Tabelle scannen - DynamoDB

Ich brauche Kunden-ID basierend auf mehreren customer_email.

dynamodb 
    .table('bc_customer') 
    .select('customer_id') 
    .having('email').eq('[email protected]') 
    .scan(function(err, data) { 
     console.log(data); 
    }); 

Der obige Code ermöglicht es mir, einzelne E-Mail-ID übergeben, gibt es eine Möglichkeit, auf mehrere E-Mail-ID zu suchen?

Antwort

0

DynamoDB unterstützt query, mit dem Sie Daten von einer und nur einer Partition (d. H. Einen Partitionsschlüssel) abrufen können, oder scan, die jedes Element in der Tabelle zurückgibt (d. H. Einen vollständigen Tabellenscan).

Wenn Sie die zu abfragenden Partitionsschlüssel kennen, können Sie mehrere Abfragen schneller ausführen und Ihre Ergebnismenge kombinieren. Wenn Ihnen die Leistung egal ist oder Sie mit der Geschwindigkeit zufrieden sind (wenn Sie bedenken, dass ein Scan schlecht skaliert wird, wenn Ihr Tisch wächst), können Sie einen Scan verwenden.

Beachten Sie, dass Sie oben einen Scan durchführen und daher Ihren Partitionsschlüssel nicht als Index verwenden.

würde eine Abfrage wie folgt sein:

DynamoDB 
    .table('bc_customer') 
    .where('email').eq('[email protected]') 
    .query(function(err, data) { 
     console.log(err,data) 
    }) 

Und einen Scan (ich glaube - die awspilot documents nicht ganz klar sind) so etwas wie sein sollte:

DynamoDB 
    .table('bc_customer') 
    .having('email').eq('[email protected]') 
    .having('someattribute').eq('something') 
    .scan(function(err, data) { 
     console.log(err, data) 
    }) 
Verwandte Themen