我将一个json文件导入到我的数据库中,而db本身也可以工作。
如果使用
push_front
我的输出如下:
print db.points.find_one()
这正是我想要的。但是,如果我想获得不同用户的数量:
{u'id': u'342902', u'_id': ObjectId('555af76a029d3b1b0ff9a4be'), u'type': u'node', u'pos': [48.9979746, 8.3719741], u'created': {u'changeset': u'7105928', u'version': u'4', u'uid': u'163673', u'timestamp': u'2011-01-27T18:05:54Z', u'user': u'Free_Jan'}}
我收到错误:
print db.points.distinct({"created.user"}).length
这表明我所搜索的内容不存在(显然如上所示)。我在这里缺少什么?
答案 0 :(得分:0)
您的distinct子句中存在语法错误 - 它应该是.distinct("created.user")
而不是.distinct({"created.user"})
。
请参阅the MongoDB documentation for distinct。
编辑:要返回长度,请执行以下操作:
print len(db.points.distinct("created.user"));
......或:
print db.points.distinct("created.user").__len__();
请参阅this answer以获取Python中列表的大小。
警告:我不是Python专家所以长度可能不够完美......答案 1 :(得分:0)
我遇到了同样的问题。
print len(db.points.distinct("created.user"))
有效。
然而,
print db.points.distinct("created.user").__len__();
才不是。
错误的原因是大括号:
db.points.distinct({"created.user"})
应该阅读
db.points.distinct("created.user")
另外,'。length'是一种mongo bash方法。在pymongo中,你使用'len()'。那就是:
db.points.distinct({"created.user"}).length
应阅读
print len(db.points.distinct("created.user"))
除非你使用的是mongo bash / shell。