لا يمكن التصفية باستخدام حقل سلسلة باستخدام python-eve عندما تكون القيمة هي _id لكائن آخر في mongodb
سؤال
أواجه سلوكًا غريبًا عند محاولة تصفية مجموعة باستخدام python-eve، عندما أقوم بالتصفية باستخدام المعلمة "حيث" حقلًا يحتوي على _id لمستند آخر كقيمة، ولا يتم إرجاع أي سجل، إذا أضفت حرفًا إضافيًا/ يتم إرجاع الرقم بعد قيمة الحقل دون أي مشاكل، ويحدث نفس السلوك مع أي حقل يحتوي على _id كقيمة.كما أرى في الملف الشخصي ، يبدو أن القيمة تتحول إلى $ OID عند استدعاء DB ، لكنني لست متأكدًا من سبب أي فكرة؟
شكرا غاستون
عنوان URL
http://127.0.0.1:5000/contacts?where={"task":"52cdad82a54d7506bc6f9a12"}
البيانات التي تم إرجاعها
<resource href="/contacts" title="contacts">
<link rel="parent" href="" title="home"/>
</resource>
الإعدادات.py
contacts= {
'resource_methods': ['GET', 'POST'],
'schema': {
"timestamp": {
'type': 'datetime',
},
"task": {
'type': 'string'
},
"contact_uuid": {
'type': 'string'
},
"started_by": {
'type': 'string'
},
}
}
سجل مونغو دي بي
{
"_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"
}
أنا أستخدم قاعدة بيانات مستضافة في mongolab التي تعمل بنظام mongod 2.4.7
و virtualenv، مع إخراج "تجميد النقطة" التالي
- سيربيروس==0.4.0
- حواء==0.2
- الأحداث==0.2.0
- قارورة ==0.10.1
- القارورة الرئيسية==0.4.0
- قارورة-PyMongo==0.3.0
- تحميلات القارورة==0.1.3
- قارورة-WTF==0.9.3
- جينجا2==2.7
- MarkupSafe==0.18
- WTForms==1.0.5
- ويركيزوغ==0.9.4
- الوامض ==1.3
- قارورة-mongoengine==0.7.0
- خطير==0.22
- المحرك الأحادي ==0.8.6
- passlib==1.6.1
- الحمر ==1.4.18
- بيمونغو==2.6.3
- pytest==2.4.2
- الطلبات==2.1.0
- simplejson==3.3.0
- wsgiref==0.1.2
المحلول
أحدث نسخة مطورة تدعم query_objectid_as_string
.اضبطه على True
لحقل "المهمة" الخاص بك ويجب أن تكون بخير.يرى مستندات للتفاصيل.