質問

私は2人のユーザー間でアクションログでコレクションを持っています。それはsrc_idとDEST_IDを持っています。

私はID1とIDのリストの間で行動しているすべてのレコードフェッチしているよ - 。 "IDS = [ID2、ID3、ID4]を"

次の2つのステートメントが正常に動作します:

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のいずれかがID1がDEST_IDあるとIDのリスト内のIDのいずれかがsrc_idあるDEST_ID ORすべてのレコードであるすべてのレコードを取得しようとしています。

私は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