【发布时间】:2015-10-23 16:45:28
【问题描述】:
我一直在将数据从 twitter 流式传输到 mongo 数据库中。但是我发现我没有错误地格式化搜索,所以我从各地而不是我想要的一个城市获取数据(我通过检查城市名称是否出现在“位置”或“名称”下json 中的“用户”)。
我只想将正确的文档复制到新集合中,但我发现在 pymongo 中几乎不可能做到!我使用 pymongo 而不是 shell,因为我使用正则表达式来搜索城市名称(有很多同义词)。
regex=re.compile(<\really long regular expression of city names>)
我已经能够在正则表达式中正确使用 find();它会返回我正在寻找的内容:
db.coll.find({'$or':[{'user.location':{'$in':[regex]}},{'user.name':{'in':[regex]}}]})
我只需要将它返回的内容复制到一个新集合中,但事实证明这很困难。
我尝试this method,尝试forEach() 尝试复制文档,使用bson wrapping,我找到了here,但它仍然不起作用。
db.coll.find({'$or':[{'user.location':{'$in':[regex]}},{'user.name':{'in' [regex]}}]})\
.forEach(bson.Code( '''
function(doc) {
db.subset.insert(doc);
}'''))
具体来说,我尝试这个时遇到的错误是
AttributeError: 'Cursor' 对象没有属性 'forEach'
我不知道出了什么问题,也不知道如何解决这个问题。谁能告诉我我可以做些什么来解决这个问题,或者将文档复制到新集合的更好方法?
【问题讨论】: