PyMongo find_one无法正常工作

时间:2013-02-19 08:13:30

标签: mongodb pymongo

我对Pymongo的find_one函数有一个奇怪的问题。我在本地计算机上托管了一个名为“cluster_db”的数据库。它有一个名为'clusters'的集合。当我在mongo shell中运行查询时,我得到以下输出。

> db
cluster_db
> db.clusters.findOne({_id:-8488068664808428000})
{
    "_id" : NumberLong("-8488068664808427924"),
    "members" : [
        {
            "participationCoeff" : 1,
            "tweetID" : NumberLong("-8488068664808427924")
        }
    ]
}
> 

现在,在我的代码初始化阶段,我在模块'dbutil'中定义了一个常量,如下所示:

DB_CONNECTION           = MongoClient('localhost', 27017)
CLUSTER_DB_HANDLE       = DB_CONNECTION['cluster_db']

在此之后,在一个函数中,我正在跟随调用。

dbutil.CLUSTER_DB_HANDLE.clusters.find_one({'_id':clusterID})

但是,上述调用始终返回“无”。如果我去MongoShell并使用相同的clusterID运行完全相同的查询,我会看到结果。

我知道这是一个奇怪的错误,但不知怎的,我无法弄清楚为什么会发生这种情况。在其他地方,我能够使用dbutil.CLUSTER_DB_HANDLE.clusters

成功调用cluster_db中的'clusters'集合。

2 个答案:

答案 0 :(得分:0)

是clusterID == -8488068664808428000? 你为什么不试试CLUSTER_DB_HANDLE.clusters.find_one({'_ id': - 8488068664808428000})?

答案 1 :(得分:0)

我自己遇到了这个,结果我传入的id是int类型,我必须通过调用int(id)来转换它,例如:

db.Employees.find_one({'id' : int(id)}) // this works
db.Employees.find_one({'id' : id}) //this doesn't work

希望这有助于某人。