题
我有一个集合是在两个用户之间的操作日志。它有一个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
这样。你将不得不进行联合客户端。
不隶属于 StackOverflow