2013-07-15 34 views
2

我在ming如何通過_id找到明?

from ming import Session, create_datastore 
from ming import schema 
from ming.odm import ODMSession 
from ming.odm.mapper import MapperExtension 
from ming.odm.property import ForeignIdProperty 
from ming.odm.property import FieldProperty, RelationProperty 
from ming.odm.declarative import MappedClass 
import config 

bind = create_datastore(config.DATABASE_NAME) 
session = Session(bind) 
odm_session = ODMSession(doc_session=session) 


class Document(MappedClass): 

    class __mongometa__: 
     session = odm_session 
     name = 'document' 

    _id = FieldProperty(schema.ObjectId) 

映射類現在,我想做一個簡單的查詢,以它作爲

Document.query.get(_id = 「51e46f782b5f9411144f0efe」)

但它不起作用。文檔不太清楚。我知道,在MongoDB的外殼,我們必須包裹ID在的ObjectId對象,但我不能讓它在Python

工作

回答

2

你應該嘗試的ObjectId

from bson.objectid import ObjectId 
Document.query.get(_id=ObjectId('51e46f782b5f9411144f0efe')) 

查詢赤裸pymongo

from bson.objectid import ObjectId 
from pymongo import Connection 
connection = Connection() 
db = connection['lenin'] 
collection = db.document 
collection.find_one({'_id': '51e35ee82e3817732b7bf3c1'}) # returns None 
collection.find_one({'_id': ObjectId('51e35ee82e3817732b7bf3c1')}) # returns the object