2017-07-26 81 views
0

我目前正在使用mongodb並計劃遷移到dynamodb。 我有一個非常複雜的算法來查找暗示AND和OR的元素。在dynamodb掃描中使用或算法

這是一個(簡化)示例。 通過用戶搜索引擎。 假設用戶有兩個字段:lastName和firstName。

用戶搜索「哈利寶」

搜索引擎應搜索:

$or : [{$and : [{lastName : "harry"}, {firstName: "po"}]}, {$and : [{lastName : "Po"}, {firstName: "harry"}]}] 

,我們可以想像其他的東西,就像姓氏「哈利寶」,沒有姓名等

隨着mongoDB我使用java包裝Spring DataMongoDB,它允許我做所有我想做的事情。 但是我不能夠找到一種方法,與dynamodb

做到這一點,我發現這個頁面 https://stackoverflow.com/questions/24275243/writing-dynamodb-or-condition-query#=

Howver看起來我只能做的還是我的條件之間。 有什麼我失蹤?

+0

你寫道:「我只能在我的元素之間做一個OR」。 「我的元素」是什麼意思? –

+0

對不起,我想說的條件 – Geoffrey

回答

0

在DynamoDB,您可以指定可以包含AND和OR運算與運營商如表達式組合掃描條件:> =,=,<等

這裏是DynamoDB文檔是怎麼說的:

ComparisonOperator - 用於評估屬性的比較器。例如,對於 示例,等於,大於,小於等等。以下 比較運算符可用:EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL |包含| NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN

可以使用ConditionalOperator到ComparisonOpertors結合:

邏輯運算符適用於在預計,QueryFilter或ScanFilter地圖的條件:

AND - 如果所有的條件評估爲真,然後整個地圖 評估爲真。

或者 - 如果至少有一個條件的計算結果爲 ,則整個映射的計算結果爲true。

如果您省略ConditionalOperator,則AND爲默認值。