使用PyMongo从JSON返回随机结果

时间:2015-07-20 20:36:05

标签: python json mongodb pymongo

我试图使用PyMongo从一组JSON数据中检索随机结果。我正在使用Flask和MongoDB。以下是它的设置方式:

def getData():
    dataCollection = db["data"]
    for item in dataCollection.find({},{"Category":1,"Name":1,"Location":1,"_id":0}):
        return (jsonify(item)

return (jsonify(item)返回1个结果,它始终是第一个结果。我怎么能随机化呢?

我尝试导入随机模块(import random)并将最后一行切换为random.choice(jsonify(item),但这会导致错误。

以下是导入MongoDB的数据:

[
  {
    "Category":"Tennis",
    "Name":"ABC Courts",
    "Location":"123 Fake St"
  },
  {
    "Category":"Soccer",
    "Name":"XYZ Arena",
    "Location":"319 Ace Blvd"
  },
  {
    "Category":"Basketball",
    "Name":"Dome Courts",
    "Location":"8934 My Way"
  },
]

1 个答案:

答案 0 :(得分:1)

您总是得到一个结果,因为return jsonify(item)结束了请求。 jsonify返回一个响应,它不仅将Mongo的结果转换为json对象。如果您想将Mongo结果转换为序列,请使用list,然后使用random.choice

item = random.choice(list(dataCollection.find({},{"Category":1,"Name":1,"Location":1,"_id":0}))

return jsonify(item)