Pymongo: как использовать оператор $ или для столбца, который является массивом? - PullRequest
5 голосов
/ 27 декабря 2011

У меня есть такая коллекция:

user_id     albums
1           [1 2 3 4]
2           [3 5 7 8]

Я хочу узнать все записи о том, что в альбомах содержится 3 или 7 или 8, я написал такой код, но не работает:*

or_array = []
or_array.append({"albums":3})
or_array.append({"albums":7})
or_array.append({"albums":8})

collection1.find({"$or":or_array})

Как правильно это сделать?

1 Ответ

7 голосов
/ 27 декабря 2011

попробуйте

collection1.find({'albums': {'$in': [3, 7, 8]}})

из документации mongodb, [IN] allow[s] you to specify an array of possible matches

Если это не сработает, возможно, вернитесь и посмотрите на действительные типы 3 7 и 8 в коллекции, чтобы они были целыми числами.

print type(collection1.find_one()['albums'][0])
...