我一直在将数据从twitter传输到mongo数据库。但是我发现我没有错误地格式化搜索,所以我从所有地方而不是我想要的一个城市获得数据(我通过检查城市名称是否出现在' location&#找到位置39;或者'在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包装来复制文档,我发现here,但它仍然无法正常工作。
db.coll.find({'$or':[{'user.location':{'$in':[regex]}},{'user.name':{'in' [regex]}}]})\
.forEach(bson.Code( '''
function(doc) {
db.subset.insert(doc);
}'''))
具体来说,我尝试这个时得到的错误是
我不知道出了什么问题,或者我怎么能解决这个问题。任何人都能告诉我我可以做些什么来解决这个问题,或者更好的方法将文件复制到新的收藏品中?
答案 0 :(得分:1)
游标已经能够完成您不需要forEeach的结果。尝试
for tweet in db.coll.find({'$or':[{'user.location':{'$in':[regex]}},{'user.name':{'in' [regex]}}]}):
db.subset.insert(tweet)