2017-02-10 2 views
0

私のプロジェクトでは、ANDとORを持つクエリでmongodbからクエリする必要がありますが、エラーが表示されます。以下質問とmongodbのANDとOR条件のRobot Frameworkで

私のコードです:

*** Variables *** 
${host} mongodb://username:[email protected]/RegressionDB 
${port} 27017 
${mongDBName} RegressionDB 
${mongoCollection} Service 

${mQuery}  { "service.offerings.offering.offeringType.masterCode": "Plan", $or: [ { "service.offerings.offering.offeringSubType.masterCode": "WS" }, { $and: [ { "service.isDeliveryRequired": "N" } ] } ] } 

${mReturnFields} service.customerCode 
${isReturnID}  False 

*** Test Cases *** 
Query from MongoDatabase 
    Connect To MongoDB ${host} ${port} 
    ${result}= Retrieve Mongodb Records With Desired Fields ${mongDBName} ${mongoCollection} ${mQuery} ${mReturnFields} ${isReturnID} 

私は、次のエラーを得た:

ValueError: Expecting property name enclosed in double quotes: line 1 column 58 (char 57) 

私はMongoChefを使用して実行し、同じクエリはそれができるものを、うまくいきましたが、ロボットのフレームワークで作業していません理由。

+1

最初のステップは '$ {mQuery}'をログに記録して、あなたが思うように見えるようにすることです。 –

+0

クエリがANDまたはORを持たない場合、クエリは正常に機能しました –

+0

{"service.offerings.offering.offeringType.masterCode": "Plan"、$または:{{"service.offerings.offering.offeringSubType.masterCode" : "WS"}、{$ and:[{"service.isDeliveryRequired": "N"}]}]}これはあなたのクエリですか?あなたは$か/ $か? – Waman

答えて

1

ここでの問題は、ANDやORとは関係ありません。プロパティの設定と関係があります。プロパティを設定するときは、値を二重引用符で囲む必要があります。通常のクエリで動作し、このエラーをスローするだけなので、二重引用符で追加してみてください!

それはそれを修正する必要があります!

+0

こんにちはwaman、私は設定プロパティを理解していない、私のmongoqueryで、すべてのキー値のペアは二重引用符で、私は見つけることができない逃した。これで助けてください –

+1

ええ名前の値のペアは二重引用符で囲まれています。あなたが通常のクエリのために動作し、このエラーをスローするだけであると言ったので、あなたは二重引用符で追加したり試したりすることができます! – Waman

+0

私はmongoDbに取り組んでいませんが、mongoDo python libがJSONを使用してこれらのプロパティをコードのどこかに格納することができ、このエラーが表示されるためです。しかし、ちょうど考えました! – Waman