我对DynamoDB相当陌生,目前我正在尝试使用Node.js的AWS示例。我对本教程有疑问:AWS tutorial to load a movie DB and query data.
我想搜索指定演员出演的电影。 例如,“ Daniel Bruhl”和“ Olivia Wilde”。 另一个示例是“ Daniel Bruhl”或“ Hugh Jackman”。 另外,如果可能的话,我想搜索模糊(例如“ ??? Bruhl”)。
是否需要拆分表或定义过滤器?
样本数据:
{ "year" : 2013, "title" : "Turn It Down, Or Else!", "info" : { "directors" : [ "Alice Smith", "Bob Jones" ], "release_date" : "2013-01-18T00:00:00Z", "rating" : 6.2, "genres" : [ "Comedy", "Drama" ], "image_url" : "http://ia.media-imdb.com/images/N/O9ERWAU7FS797AJ7LU8HN09AMUP908RLlo5JF90EWR7LJKQ7@@._V1_SX400_.jpg", "plot" : "A rock band plays their music at high volumes, annoying the neighbors.", "rank" : 11, "running_time_secs" : 5215, "actors" : [ "David Matthewman", "Ann Thomas", "Jonathan G. Neff" ] } }
模式:
TableName : "Movies", KeySchema: [ { AttributeName: "year", KeyType: "HASH"}, //Partition key { AttributeName: "title", KeyType: "RANGE" } //Sort key ], AttributeDefinitions: [ { AttributeName: "year", AttributeType: "N" }, { AttributeName: "title", AttributeType: "S" } ], ProvisionedThroughput: { ReadCapacityUnits: 10, WriteCapacityUnits: 10 }
表格已填写:
allMovies.forEach(function(movie) { var params = { TableName: "Movies", Item: { "year": movie.year, "title": movie.title, "info": movie.info } }; docClient.put(params, function(err, data) { if (err) { console.error("Unable to add movie", movie.title, ". Error JSON:", JSON.stringify(err, null, 2)); } else { console.log("PutItem succeeded:", movie.title); } });
答案 0 :(得分:0)
查看Specifying Item Attributes文档。您的info
字段是JSON,因此可以告诉Dynamo查看子字段,子子字段等。
然后,将这些与Condition Expressions结合使用即可获得所需的功能。
请记住,尽管这些事情可能,但它们是否有效仍然取决于表模式。 Looking around a bit我认为您无法在actors
子字段上建立索引,因此,如果您希望对此类查询执行以下操作,则需要将数据拉出到其自己的列中以建立索引。快点。