TypeError:'Cursor' 类型的对象没有 len()

Posted

技术标签:

【中文标题】TypeError:\'Cursor\' 类型的对象没有 len()【英文标题】:TypeError: object of type 'Cursor' has no len()TypeError:'Cursor' 类型的对象没有 len() 【发布时间】:2013-04-18 17:13:21 【问题描述】:

我收到此错误:

TypeError: 'Cursor' 类型的对象没有 len()

当我尝试执行时:

reply = db['test'].find("date":"$gt":date_query ,"date":1,"route_id":1,"loc":1,"_id":0)

length = len(reply)

【问题讨论】:

这是因为您所做的只是定义了作为服务器查询请求的游标 - 您实际上并没有得到一组结果(因为通常您会遍历一个游标来获取批量文件)。 【参考方案1】:

pymongo cursor 有一个方法 count() 将返回您要查找的内容:

reply = db['test'].find(
  "date":"$gt":date_query,
  "date":1,"route_id":1,"loc":1,"_id":0
)

length = reply.count()

【讨论】:

【参考方案2】:

Mongo 4.0.3/PyMongo 3.7.0 开始,您也可以在cursor 上使用count_documents 而不是count

db.collection.count_documents( "a": 2 )
# where  "a": 2  is whatever filtering query

db.collection.count_documents 是现已弃用的db.collection.count 的替代品。

【讨论】:

【参考方案3】:

是的,伯爵会为您完成这项工作。

length = reply.count() 

length = reply.count(with_limit_and_skip=False)

不得不忍受很多,因为长度 = count(reply) 也不起作用。由于我还不允许发表评论,所以想留下这个答案。希望这将有助于某人节省一些时间。

【讨论】:

以上是关于TypeError:'Cursor' 类型的对象没有 len()的主要内容,如果未能解决你的问题,请参考以下文章

mysql-connector-python cursor_cent.py 文件上的 Django 迁移错误“TypeError:序列项 1:预期类似字节的对象,str found”

`TypeError: argument 2 must be a connection, cursor or None` 在 Psycopg2

TypeError: 'float' 类型的对象没有 len() & TypeError: 'float' 对象不可迭代

Python - TypeError: '...' 类型的对象没有 len()

Django - TypeError:“方法”类型的对象没有 len()

“TypeError”类型的对象不是 JSON 可序列化的