2017-06-13 15 views
0

私は情報のデータベースをスクラップしようとしていますが、クエリに問題がありました。文字列変数をPymongoクエリに渡す

{ 
    "ID": 346, 
    "data": [ 
    { 
     "number": "23", 
     "name": "Winnie" 
    }, 
    { 
     "number": "12", 
     "name": "Finn" 
    }, 
    { 
     "number": "99", 
     "name": "Todd" 
    } 
    ] 
} 


{ 
    "ID": 346, 
    "data": [ 
    { 
     "number": "12", 
     "name": "Ram" 
    }, 
    { 
     "number": "34", 
     "name": "Greg" 
    }, 
    { 
     "number": "155", 
     "name": "Arnie" 
    } 
    ] 
} 

関連のPythonコードは以下の通りです:ここでのMongoDBにおける基本的なデータベースのセットアップだ私はデータ内数として「23」を持つエントリの正しい数を返すcollection.find({"data.number" : "23"}).count()を入力すると

import pymongo 
import json 
import io 
import sys 
from bson.json_util import dumps 
from pymongo import MongoClient 
stringArr = ['"23"', '"12"', '"155"'] 
for x in range(0, len(stringArr)) 
print(collection.find({"data.number" : stringArr[x]}).count()) 

は、だから私はPythonで見つかったシンタックスが、変数が文字列であることに関係していると思われますが、私はPyongongoだけでなく、MongoDBにはあまり経験がありません。どんな提案も大歓迎です!

+2

「155」「なぜ」「155」ではないのですか? – depperm

+0

これは、感謝しました!!!! –

答えて

1

$ elemMatch演算子は、BSONドキュメントに属する配列フィールドに含まれる値を一致させるために使用されます。

上記のような記述によれば、MongoDBシェルで以下の生のクエリを実行してみてください。

db.collection.find({ 
    data: { 
     $elemMatch: { 
      number: { 
       $in: ["23", "12", "155"] 
      } 
     } 
    } 
}) 
関連する問題