2016-03-27 17 views
-1

2つのMongoDBコレクションがあり、販売されています。pymongoで2つのコレクションを照会する

私は、特定の株式タイプの販売ですべてのエントリを取得したいと思います。 株式タイプの情報は、株式と呼ばれる別のコレクションにあり、どちらも一意の株価指数を持っています。

私はMongoDBに参加できないので、私は両方のコレクションを照会しようとしています。 これについてはどのような方法が最適ですか?私が試してみました

:任意の応答のために事前に

AttributeError: 'dict' object has no attribute 'Stock_Index'

ありがとう:上記の場合

cursor1 = db.stock.find({ 
    "$or": [ 
     {“Stock_Type": 1}, 
     {“Stock_Type": 2}, 
     {“Stock_Type": 3}, 
     ] 
    }) 

stock_id = [] 

for i in cursor: 
    stock_id.append(i.Stock_Index) 

cursor2 = db.sold.find({ 
    "$and": [ 
     {“Stock_Index": {"$in": stock_id}}, 
     {“Month”: “February}, 
     {“Category”:5} 
     ] 
    }) 

私は内部サーバーエラーを取得します。

+1

i ["Stock_Index"] '。 –

+0

二重引用符のいくつかは怖いです。 –

答えて

1

pymongoカーソル内のすべての項目は、というPythonで辞書として表されるMongoDBドキュメントです。 list comprehensionで、

stock_id = [] 
for i in cursor: 
    stock_id.append(i["Stock_Index"]) 

をまたは:: - あなたは辞書内の項目にアクセスするには、ドット表記を使用することはできません代わりに、使用

stock_id = [i["Stock_Index"] for i in cursor] 
側の注意点として

は、あなたがそれを作っていませんでした1つのクエリで2つのコレクションを結合することはできないため、1つのクエリです。詳細は

+0

こんにちは、あなたの非常に有用な応答ありがとう:)私は空のリスト[]が返される前にリストの長さを印刷するときに、サーバーは常に1より大きい数字を出力する別の問題があります。リストが空であってはならないことは確かですが、これは本当に奇妙です。 – noob

関連する問題