1

我有一个集合,它是两个用户之间的操作日志。它有一个 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} }
        ]}
       )

如果是这样,有人可以阐明我做错了什么吗?更重要的是,如何在 mongo 中完成我想要做的事情。

我正在尝试获取 id1 是 src_id 并且 ids 列表中的任何 id 是 dest_id 的所有记录,或者 id1 是 dest_id 并且 ids 列表中的任何 id 都是 src_id 的任何记录。

我正在使用 pymongo 1.7。谢谢!

4

2 回答 2

0

$or 运算符在 MongoDB 1.5.3 及更高版本中可用。

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

find = self.db.action_log.find()
find.where(pymongo.code.Code('this.dest_id==1 || this.src_id==2'))
于 2010-08-17T21:43:17.073 回答
0

我不认为你可以$or那样使用。您将必须执行联合客户端。

于 2010-08-08T23:05:39.220 回答