0

以下のようにmongodbコレクションをクエリしようとしています..

>>> db.ds.find({"from":{'$regex':'Pooja'}}).count()
18

しかし、この同じクエリにカスタム文字列を追加すると、エラーが発生します..

>>> a = 'Pooja'
>>> querystring = ''
>>> querystring = querystring+"'from':{'$regex':"+a+"}"
>>> querystring
"'from':{'$regex':Pooja}"
>>> db.ds.find({querystring}).count()
SyntaxError: invalid syntax
>>> 

クエリ文字列に明示的に複数のパラメーターが必要なので、この方法を使用しています。誰でもこれで私を助けることができますか??

4

1 に答える 1

1

コードにいくつかの重大なエラーがあります。

初めに:

db.ds.find({querystring}).count()  # SyntaxError here

この行の問題はSyntaxError{object}構文がset組み込み型のリテラルであり、Python 2.7.x バージョン以降で使用できるため、ここでは 1 つの文字列で構成されるセットを作成しようとしています。

{object}  # creates set since Python 2.7
{object1: object2}  # creates dict (object1 should be [hashable][1])

Python 2.7 でセットを作成する例を見てみましょう:

s = {1, 2, 3}  # Creating set of three unique elements ({} - set literal)
d = {1: 'a', 2: 'b'}  # Creating dict of number->letters ({:} - dict literal)

2 つ目は、MongoDB Python ドライバー (Pymongo を使用していると仮定します) が文字列をクエリとして受け入れないことです。独自の API があり、すべてのクエリはdictJSON オブジェクトを表す s を介して行われます (Mongo はすべてのオブジェクトを BSON と呼ばれる JSON のバイナリ表現で内部に格納することに注意してください)。

ここで、setの代わりに作成しようとしている最初の問題を思い出してくださいdict)。

結論:

  1. s を使用dictして、適切なPymongoクエリを作成します。
  2. 辞書を適切に作成します (セットではありません)。
于 2012-08-22T11:00:35.900 に答える