Перевод MySQL NOT IN в MongoDB - PullRequest
0 голосов
/ 05 июня 2019

Я недавно начал использовать MongoDB, и при переводе запросов я столкнулся с проблемой при попытке перевести запрос MySQL NOT IN.

Я пытаюсь найти идентификаторы, которыенет в другой коллекции.Мне нужен способ вернуть количество этих идентификаторов, а затем список этих идентификаторов.

В MySQL эти идентификаторы находятся в таблице с именем songs и называются spotify_id.Я проверяю таблицу с именем artists, где идентификаторы называются track_id.

MySQL Query:

SELECT spotify_id FROM songs WHERE spotify_id NOT IN (SELECT artists.track_id FROM artists)

Мой текущий код с использованием MongoDB:

track_ids = artists.find({}, {'track_id': 1})
track_ids_list = [d.get('track_id') for d in track_ids]

# Getting amount of ids not present in artists
tracks_num = songs.count_documents({'spotify_id': {'$nin': track_ids_list}})

# Getting tracks not present in artists
tracks = songs.find({'spotify_id': {'$nin': track_ids_list}})

Запрос MongoDB, похоже, возвращает положительное количество документов, даже если все идентификаторы должны присутствовать в обеих коллекциях.Запрос MySQL отлично работает в той же базе данных.

Есть ли лучший способ выполнить запрос NOT IN в MongoDB?

Спасибо!

...