我有一个集合是在两个用户之间的操作日志。它有一个src_id和DEST_ID。

我一个希望获取所有那些ID1和ID的列表之间的操作中的记录 - “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和任何的ID列表中的ID的是DEST_ID OR其中ID1是DEST_ID和任何的ID列表中的ID的是src_id任何记录。

我使用pymongo 1.7。谢谢!

有帮助吗?

解决方案

在$或操作者是在MongoDB中1.5.3和以后版本。

另一种方法是使用Javascript函数,像...

find = self.db.action_log.find()
find.where(pymongo.code.Code('this.dest_id==1 || this.src_id==2'))

其他提示

我不认为你可以使用$or这样。你将不得不进行联合客户端。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top