python-eveを使用してStringフィールドを使用してフィルタリングできません。値がMongoDBの他のオブジェクトの_idです。

StackOverflow https://stackoverflow.com//questions/21011247

  •  21-12-2019
  •  | 
  •  

質問

Python-eveを使用してコレクションをフィルタリングしようとすると、別のドキュメントの_idを含むフィールドを使用してフィルタリングしたときに、where "parameterの_idを使用してフィルタリングすると、レコードは返されません。追加文字/番号フィールド値の後のレコードが問題なしで返された後、同じ動作は_idを値として持つフィールドでも発生します。プロファイルで表示されるように、DBを呼び出すときに値が$ OIDに変換されるようになりますが、どうしてわからない 任意のアイデア?

感謝 Gaston

URL

http://127.0.0.1:5000/contacts?where={"task":"52cdad82a54d7506bc6f9a12"}
.

返信データ

<resource href="/contacts" title="contacts">
    <link rel="parent" href="" title="home"/>
</resource>
.

settings.py

contacts= {
    'resource_methods': ['GET', 'POST'],
     'schema':  {

             "timestamp":  {
             'type': 'datetime',
         },
            "task":  {
                'type': 'string'
            },
                "contact_uuid":  {
                'type': 'string'
            },
                "started_by":  {
                'type': 'string'
            },
        }
}
.

MongoDBレコード

{
"_id": {
    "$oid": "52cdc33ca54d75085073e7ef"
},
"timestamp": {
    "$date": "2014-01-08T21:29:32.603Z"
},
"task": "52cdad82a54d7506bc6f9a12",
"contact_uuid": "43acc81a-bdd2-42dd-bc0f-8279ddd497f4",
"started_by": "admin"
}
.

MongoDBプロファイル出力

{
"op": "query",
 "ns": "callc.contacts",
 "query": {
"task": {
  "$oid": "52cdad82a54d7506bc6f9a16"
    }
  },
"ntoreturn": 10,
"ntoskip": 0,
"nscanned": 9,
"keyUpdates": 0,
"numYield": 0,
  "lockStats": {
"timeLockedMicros": {
      "r": 172,
  "w": 0
    },
"timeAcquiringMicros": {
  "r": 4,
  "w": 4
}
  },
  "nreturned": 0,
  "responseLength": 20,
  "millis": 0,
  "ts": {
    "$date": "2014-01-09T04:04:31.578Z"
  },
  "client": "XXX.17.153.XXX",
  "allUsers": [
    {
      "user": "xxxxx",
      "userSource": "callc"
    }
  ],
      "user": "xxxx@callc"
}
.

MongoD 2.4.7

を実行しているMongolabでホストされているDBを使用しています。

とvirtualenv、次の「PIP Freeze」出力

  • Cerberus== 0.4.0
  • eve== 0.2
  • イベント== 0.2.0
  • フラスコ== 0.10.1
  • フラスコ版== 0.4.0
  • フラスコ - ピモンゴ== 0.3.0
  • フラスコアップロード== 0.1.3
  • フラスコ-WTF== 0.9.3
  • jinja2== 2.7
  • MARKUPSAFE== 0.18
  • wtforms== 1.0.5
  • werkzeug== 0.9.4
  • Blinker== 1.3
  • フラスコ - MongoEngine== 0.7.0
  • itSangerous== 0.22
  • MongoEngine== 0.8.6
  • passlib== 1.6.1
  • py== 1.4.18
  • Pymongo== 2.6.3
  • Pytest== 2.4.2
  • 要求== 2.1.0
  • SimpleJson== 3.3.0
  • WSGIREF== 0.1.2
役に立ちましたか?

解決

最新のDev版はquery_objectid_as_stringをサポートしています。「タスク」フィールドのTrueに設定してください。詳細については

を参照してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top