无法使用pymongo查询Mongodb

时间:2014-07-04 08:20:58

标签: python mongodb pymongo

我一直在尝试使用pymongo使用.py文件查询到mongoDB。

现在的问题是我希望用户亲自输入searchField。

这是我的代码......

from pymongo import Connection

if __name__ == "__main__":
    con = Connection()
    db = con.fyptwitter
    collection = db.fyp


    userInputFirst = str(raw_input("Enter: "))
    userInputSecond = str(raw_input("Enter 2nd: "))
    strFirst =  userInputFirst 

    stringTest = "/" + userInputSecond + "/i"

    query = db.fyp.find({ userInputFirst : stringTest})
    print query
    for i in query:
        print i
        break
从我的mongoConnection

,它显示查询是正确的。但问题在于它没有带来任何结果。

有什么理由?

2 个答案:

答案 0 :(得分:0)

要使用pymongo设置正则表达式,您应该使用:

query = db.fyp.find({ userInputFirst : {'$regex':userInputSecond, '$options' : 'i'}})

检查http://docs.mongodb.org/manual/reference/operator/query/regex/

答案 1 :(得分:0)

你的查找功能不好!当你定义一个find函数时,你必须将值传递给function并根据它检索其他信息!我给你这个例子,我自己用它!

我的收藏包含一个单词及其含义:

  dic={"word":word,
      "mean":mean}

我的查找功能就是:

 def find_word(self,searched_word):
  #print self.dbh.users.find_one({"word":"example"})# for find a dictionary 
  users = self.dbh.users.find({"word":searched_word})
  for user in users:
   return user.get("mean")

现在在您的查询中,如果您的字典中确实存在stringTest = "/" + userInputSecond + "/i",您可以将stringTest传递给您的函数,我建议您使用str(stringTest),具体取决于您的收藏节省!