无法使用pymongo查询Mongodb

1 投票
2 回答
802 浏览
提问于 2025-04-18 12:05

我一直在尝试用.py文件通过pymongo查询MongoDB。

现在的问题是我想让用户自己输入搜索字段。

这是我的代码...

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

你的查找函数写得不太好!当你定义一个查找函数时,必须把要查找的值传递给这个函数,然后根据这个值去获取其他信息!我给你一个我自己用的例子!

我的集合里有一个字典,里面存着单词和它的意思:

  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)

0

要在pymongo中设置正则表达式,你可以使用这个:

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

可以查看这个链接了解更多信息:http://docs.mongodb.org/manual/reference/operator/query/regex/

撰写回答