PyMongo find_one 不返回现有条目

Vai*_*hek 2 python mongodb pymongo

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

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

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

DB_CONNECTION           = MongoClient('localhost', 27017)
CLUSTER_DB_HANDLE       = DB_CONNECTION['cluster_db']
Run Code Online (Sandbox Code Playgroud)

之后,在一个函数中,我进行以下调用。

dbutil.CLUSTER_DB_HANDLE.clusters.find_one({'_id':clusterID})
Run Code Online (Sandbox Code Playgroud)

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

我知道这是一个奇怪的错误,但不知何故我无法弄清楚为什么会发生这种情况。在其他地方,我能够使用 dbutil.CLUSTER_DB_HANDLE.clusters 成功调用 cluster_db 中的“集群”集合

小智 5

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

db.Employees.find_one({'id' : int(id)}) // this works
db.Employees.find_one({'id' : id}) //this doesn't work
Run Code Online (Sandbox Code Playgroud)

希望这对某人有帮助。