python-eveを使用してStringフィールドを使用してフィルタリングできません。値がMongoDBの他のオブジェクトの_idです。
質問
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
に設定してください。詳細については
所属していません StackOverflow