Mongodb,osm街道地图,独特用户

时间:2015-05-19 13:45:14

标签: mongodb pymongo

我将一个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

这表明我所搜索的内容不存在(显然如上所示)。我在这里缺少什么?

2 个答案:

答案 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。