2016-02-15 17 views
6

Birisi lütfen geçerli bir anahtar koşul ifadesinin ne olacağını bana söyleyin. MyKeyTable adlı basit bir tabloda bir sorguyu çalıştırmaya çalışıyorum. İki tür "sütun" vardır, yani Uzun ve türden bir Kimlik ve BirYerel SayıSerisi. .Geçerli bir dynamodb anahtar koşulu ifadesi nedir?

Ben yüzden denedim ben koymak tüm değerleri görmek istiyorum:

aws dynamodb query --select ALL_ATTRIBUTES --table-name MyKeyTable 
--endpoint http://localhost:8000 
--key-condition-expression "WHAT DO I PUT IN HERE?" 
ben koymak gerekir mi nedir karma

? Dokümanlar bu imhoda biraz sakat. İyi bir dokümana bir bağlantı olsa bile, herhangi bir yardım takdir edilir.

cevap

2

anahtarlarınızı içeren bir dosya oluşturun: test.json

{ 
    "yourHashKeyName": {"S": "abc"}, 
    "YourRangeKey": {"S": "xyz"} //optional 
} 

Run

aws dynamodb query --table-name "your table name" --key-conditions file://test.json 

bakın: http://docs.aws.amazon.com/cli/latest/reference/dynamodb/query.html

tablo

aws dynamodb scan --table-name "you table name" 

gerek yok etmek tarayarak içinBiz bütün tablo tarama gibi herhangi tuşları geçmesi (Not: Verilerin maksimum 1MB alacak)

bakın: http://docs.aws.amazon.com/cli/latest/reference/dynamodb/scan.html

+0

MyHashKey - senin karma anahtar değeri olurdu ve burada "abc" referans için dize olarak alınır ve adres olacak hash anahtarının değeri –

+0

Sorunuzda bunu neden kullanmış olduğumu sorguladım, ben de tarama için soruyu güncelleyeceğim –

+0

Taramayı kullanabildiğiniz için, cevabı güncelledim –

4

İşte bu komut satırı okunur hiçbir ara dosyalarla kullanabilirsiniz yaklaşır.

Birincisi, kullanım değeri tutucuları

--key-condition-expression "Id = :idValue" 

(tutucuları için kolon öneki unutmayın!), Örneğin anahtar koşul ifadesini, inşa etmek

Sonraki, bir ifade oluşturmak -attribute değerleri argüman. JSON biçimini beklediğini unutmayın. Bunu her zaman unutmaya çalıştığım zor biti, sadece bir sayı için 42 numaraya veya dize için "foo" a takamanızdır. DynamoDb'ye türüne ve ürününe bildirmeniz gerekir. Olması gereken oldukça karmaşık olabilen değer belirtimini nasıl biçimlendirebileceğinizin tam bir dökümü için Ref AWS docs.

Windows için tırnak işaretlerini iki katına çıkararak, örn., MacOS/Linux için

--expression-attribute-values "{"":idValue"":{""N"":""42""}}" 

, tek tırnak JSON etrafında gereklidir:

--expression-attribute-values '{":idValue":{"N":"42"}}' 
+1

Bunun için teşekkürler! JSON etrafında tek tırnak kullanmak, okunması biraz daha kolaylaştırabilir: '--expression-attribute-values ​​'{": idValue ": {" N ":" 42 "}}'' –

+0

Hmm .. kesinlikle daha okunaklı, sadece bu cevabı güncellemeye hazırlanırken denedim ve en azından Windows üzerinde hoşlanmıyor - ilk çift tırnak işareti –

+1

Oh bummer, sonra OS X ve Linux üzerinde oldu sonra kırılır. –