У меня есть коллекция, которая представляет собой журнал действий между двумя пользователями. У него есть src_id и dest_id.
Я ищу для извлечения все записи, которые являются действиями между id1 и списком идентификаторов - "ids = [id2, id3, id4]".
Следующие два оператора работают правильно:
act_obs = self.db.action_log.find(
{'src_id': id1, 'dest_id': {'$in': ids} }
)
act_obs = self.db.action_log.find(
{'dest_id': id1, 'src_id': {'$in': ids} }
)
Однако, и именно здесь я не могу понять, что не так, следующий отказывается вообще возвращать какие-либо результаты:
act_obs = self.db.action_log.find(
{'$or': [
{'dest_id': id1, 'src_id': {'$in': ids} },
{'src_id': id1, 'dest_id': {'$in': ids} }
]}
)
Может ли кто-нибудь пролить свет на то, что я делаю неправильно, если это так? И что еще более важно, как выполнить то, что я пытаюсь сделать в Монго.
Я пытаюсь получить все записи, где id1 - это src_id, а любой из идентификаторов в списке идентификаторов - dest_id ИЛИ любые записи, где id1 - это dest_id, а любые идентификаторы в списке идентификаторов - src_id.
Я использую пимонго 1.7. Спасибо!