【问题标题】:How to find by _id in ming?如何在ming中通过_id查找?
【发布时间】:2013-07-13 23:32:36
【问题描述】:

我在ming 中有一个映射类

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 shell 中我们必须将 id 包装在 ObjectId 对象中,但我无法让它在 Python 中工作

【问题讨论】:

    标签: python mongodb ming


    【解决方案1】:

    您应该尝试使用 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-17
      • 1970-01-01
      • 2012-09-06
      • 2015-11-08
      • 2014-10-16
      • 2021-07-20
      • 1970-01-01
      相关资源
      最近更新 更多