Python API Get方法以JSON格式获取哈希标记计数大于MongoDB内的所有tweet

Python API Get方法以JSON格式获取哈希标记计数大于MongoDB内的所有tweet,python,mongodb,mongodb-query,pymongo,Python,Mongodb,Mongodb Query,Pymongo,我有一个MongoDB数据库,其中包含许多tweet。我希望能够通过我的API获得JSON列表中的所有tweet,这些tweet包含比用户在url中指定的hashtags更多的hashtags(例如,在本例中为5) hashtag包含在数据库的entities列中,以及其他列,如user_提及、url、符号和媒体。这是我到目前为止编写的代码,但没有返回任何内容 #!flask/bin/python app = Flask(__name__) @app.route('/tweets', met

我有一个MongoDB数据库,其中包含许多tweet。我希望能够通过我的API获得JSON列表中的所有tweet,这些tweet包含比用户在url中指定的hashtags更多的hashtags(例如,在本例中为5)

hashtag包含在数据库的entities列中,以及其他列,如user_提及、url、符号和媒体。这是我到目前为止编写的代码,但没有返回任何内容

#!flask/bin/python

app = Flask(__name__)

@app.route('/tweets', methods=['GET'])
def get_tweets():
# Connect to database and pull back collections

db = client['mongo']
collection = db['collection']

parameter = request.args.get('morethan')

if parameter:
    gt_parameter = int(parameter) + 1  # question said greater than not greater or equal
    key_im_looking_for = "entities.hashtags.{}".format(gt_parameter)  # create the namespace#
    cursor = collection.find({key_im_looking_for: {"$exists": True}})

编辑:这很有效

有问题的代码是这一行

cursor = collection.find({"entities": {"hashtags": parameter}})
这个答案解释了为什么不可能直接执行您的要求

这个答案还描述了绕过它的潜在(但糟糕的)想法

最好的建议是修改您的所有文档,并在某处放置一个“num_hashtags”键,对其进行索引,然后对其进行查询

使用可以更新所有文档,并在entities文档中放置num_hashtags键

或者,可以通过对所有文档进行非常缓慢的全表扫描来解决眼前的问题,每个查询通过滥用来检查是否存在比参数大一的标签号


最好的答案(也是首先使用NoSQL数据库的关键原因)是您应该修改数据以适应检索。如果可能,您应该执行一次就地更新,添加num_hashtags键

为什么这个问题会被否决?如果出现问题,你能给出一些反馈吗?我没有投反对票,但我要警告你,你在一个问题上使用的标签越多,就会引起其他社区不必要的注意,并可能引起负面反馈。您正在使用flask和API,但是这些社区的成员不太可能帮助您创建更好的查询,并且可能不喜欢在他们那里标记问题。我也没有否决这个问题,但有一些事情是不好的。首先,代码的数量。你更应该把目标放在提取一个数据上。还有,你说“我在想我需要……”。为什么?为什么?我试着用你的第二种选择,但似乎不起作用。我会编辑我的问题来告诉你。它确实有效!没有超过6个标签的tweet可供查找,标签的编号从0开始,因此不需要+1。
gt_parameter = int(parameter) + 1  # question said greater than not greater or equal
key_im_looking_for = "entities.hashtags.{}".format(gt_parameter)  #create the namespace# 
# py2.7 => key_im_looking_for = "entities.hashtags.%s" %(gt_parameter) 
# in this example it would be "entities.hashtags.6"
cursor = collection.find({key_im_looking_for: {"$exists": True}})