2011-12-27 14 views
5

私はこのようなコレクションを持っている:

or_array = [] 
or_array.append({"albums":3}) 
or_array.append({"albums":7}) 
or_array.append({"albums":8}) 

collection1.find({"$or":or_array}) 
:私はアルバムが3または7または8が含まれている、私はこのようなコードを書いたが、動作していない、すべてのレコードを知りたい

user_id  albums 
1   [1 2 3 4] 
2   [3 5 7 8] 

これを行う正しい方法は何ですか?

+1

うーん、と好奇心 – Cameron

答えて

7

それは、多分、バックトラックを仕事と彼らを確保するために37、コレクション内の8の実際の種類を見ていない場合は[IN] allow[s] you to specify an array of possible matches

、MongoDBのドキュメントからこの

collection1.find({'albums': {'$in': [3, 7, 8]}}) 

を試してみてくださいintです。

print type(collection1.find_one()['albums'][0]) 
+0

...あなたは[*べきである*仕事](http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-ValueinanArray)をやっているように見えますこれがうまくいくかどうかを知っていれば、OPの方法はなぜ機能しないのですか? – Cameron

+0

私の推測ではそれはdoesnt/shouldntの仕事です(上のdidntの場合)が、おそらく理由を理解するために彼を導くでしょう:)もし私がうまくいけば、diffも知りたいです! – dskinner

関連する問題