dynamodb: how to filer all items which do not have a certain attribute? -
i have table of users primary hash key of userid. each user may/may not have string attribute called "environment". users have "environment"="xyz" or not have "environment" attribute.
the following code filter users environment=xyz, how filter items no environment @ all? dynamo api not allow filter on empty string.
amazondynamodbclient client = dbclientmanager.getdynamodbclient(); arraylist<attributevalue> avlist = new arraylist<attributevalue>(); avlist.add(new attributevalue().withs("xyz")); condition scanfiltercondition = new condition() .withcomparisonoperator(comparisonoperator.eq.tostring()) .withattributevaluelist(avlist); map<string, condition> conditions = new hashmap<>(); conditions.put("environment", scanfiltercondition); scanrequest scanrequest = new scanrequest() .withtablename("users") .withattributestoget( "userid", "environment"); .withscanfilter(conditions); scanresult result = client.scan(scanrequest);
for dropped scan filter, , filtering client-side. bit there way server side?
thanks, aliza
hope i'm not late. i've found useful function use in query. did not check scanrequest queryrequest works charm.
queryrequest queryrequest = new queryrequest() .withtablename("youtablename") queryrequest.setfilterexpression(" attribute_not_exists(yourattributename) ") queryrequest.setexpressionattributevalues(expressionattributevalues) queryrequest.setexclusivestartkey(ifyouhave) queryrequest.setselect('all_attributes') queryrequest.setexpressionattributenames(younames)
attribute_not_exists(yourattributename) works ":aws-sdk:1.11.11" use attribute_exists(yourattributename)
Comments
Post a Comment