我在MongoDB集合中收集了大约140万条推文。我想找到所有不转发的东西,并且正在使用Python。文件的结构如下:
{
'_id': ObjectId('59388c046b0c1901172555b9'),
'coordinates': None,
'created_at': datetime.datetime(2016, 8, 18, 17, 17, 12),
'geo': None,
'is_quote': False,
'lang': 'en',
'text': b'Adam Cole Praises Kevin Owens + A Preview For Next Week\xe2\x80\x99s',
'tw_id': 766323071976247296,
'user_id': 2231233110,
'user_lang': 'en',
'user_loc': 'main; @Kan1shk3',
'user_name': 'sheezy0',
'user_timezone': 'Chennai'
}
我可以编写一个查询来查找上面的特定推文:
twitter_mongo_collection.find_one({
'text': b'Adam Cole Praises Kevin Owens + A Preview For Next Week\xe2\x80\x99s'
})
但是当我尝试查找转推时,我的代码不起作用,例如我尝试找到任何以这样开头的推文:
'text': b'RT some tweet'
使用此查询:
find_one( {'text': {'$regex': "/^RT/" } } )
它不会返回错误,但它找不到任何内容。我怀疑它在文本开始之前就与'b'有关。我知道我还需要在某处放置'$ not:',但不确定在哪里。
谢谢!
答案 0 :(得分:0)
看起来您的正则表达式搜索正在尝试匹配字符串
/Applications/MAMP/logs
但是你想匹配像
这样的字符串
b'RT'
尝试使用此正则表达式而不是
b'RT some text afterwards'
答案 1 :(得分:0)
我必须解码'文字'被编码为二进制的字段。然后我就可以使用
了twitter_mongo_collection.find_one({{&#39; text&#39;:{&#39; $ not&#39;:re.compile(&#34; ^ RT。*&#34;)}})< / p>
找到所有未以&#34; RT&#34;。
开头的文件