diff --git a/search_api_db/src/Plugin/search_api/backend/Database.php b/search_api_db/src/Plugin/search_api/backend/Database.php
index 36c0187..28900b0 100644
--- a/search_api_db/src/Plugin/search_api/backend/Database.php
+++ b/search_api_db/src/Plugin/search_api/backend/Database.php
@@ -2016,7 +2016,7 @@ protected function createDbCondition(ConditionGroupInterface $conditions, array
         $field = $condition->getField();
         $operator = $condition->getOperator();
         $value = $condition->getValue();
-        $not_equals = $operator == '<>' || $operator == '!=';
+        $not_equals = in_array($operator, array('<>', '!=', 'NOT IN'));
 
         // We don't index the datasource explicitly, so this needs a bit of
         // magic.
@@ -2079,7 +2079,7 @@ protected function createDbCondition(ConditionGroupInterface $conditions, array
             // values equals the one given in this condition.
             $query = $this->database->select($field_info['table'], 't')
               ->fields('t', array('item_id'))
-              ->condition('value', $value);
+              ->condition('value', $value, is_array($value) ? 'IN' : '=');
             $db_condition->condition('t.item_id', $query, 'NOT IN');
           }
           else {
diff --git a/search_api_db/tests/src/Kernel/BackendTest.php b/search_api_db/tests/src/Kernel/BackendTest.php
index 8538f5d..2263168 100644
--- a/search_api_db/tests/src/Kernel/BackendTest.php
+++ b/search_api_db/tests/src/Kernel/BackendTest.php
@@ -357,8 +357,8 @@ protected function searchSuccess1() {
     $this->assertWarnings($results);
 
     $results = $this->buildSearch()->addCondition('keywords', array('grape', 'apple'), 'NOT IN')->execute();
-    $this->assertEquals(4, $results->getResultCount(), 'Query with NOT IN filter returned correct number of results.');
-    $this->assertEquals($this->getItemIds(array(1, 2, 4, 5)), array_keys($results->getResultItems()), 'Query with NOT IN filter field returned correct result.');
+    $this->assertEquals(2, $results->getResultCount(), 'Query with NOT IN filter returned correct number of results.');
+    $this->assertEquals($this->getItemIds(array(1, 3)), array_keys($results->getResultItems()), 'Query with NOT IN filter field returned correct result.');
     $this->assertIgnored($results);
     $this->assertWarnings($results);
 
