从mongodb,python3中的字符串进行查询

时间:2017-05-31 11:51:00

标签: python mongodb python-3.x pymongo

我试图在mongodb中进行查询,我不知道从一开始我有多少变量。 你得到一个带变量(字符串)的数组,然后mongo应该通过$或运算符返回,所以没有重复。

def findRecipes(IngredientsHome):
#Query and return all the alternatives

arrayCompleteSearch = [];
if len(IngredientsHome) > 1:
    #theHardStuuff
    #Create the query based on ingredientsarray
    argsCount = len(IngredientsHome)
    argsFunction = "";
    for i in range(0, len(IngredientsHome)):
        if i < (len(IngredientsHome)-1):
            argsFunction += ("{"+'"_Ingredients":' + '"' + IngredientsHome[i] + '"' "}, ")
        else:
            argsFunction += "{" + '"_Ingredients":' + '"' + IngredientsHome[i] + '"' + "}"

如果我这样做

print("coll.find({" + '$or' + ':' + '[' + argsFunction + ']' "})") 

命令行将打印(不执行)我想在mongodb中执行的命令,但我不知道如何使它在mongo中工作并将结果返回到数组。我正在使用pymongo,如果可以使用字符串作为完整查询,我不会。在sql中,我可以将整个“查询”作为字符串"SELECT * FROM ...",而pymongo需要:在字符串之外,更像coll.find({"String":"String"})。当我不知道从mongodb查询开头有多少表达式时,是否有类似的方法或其他方式来进行此查询?

1 个答案:

答案 0 :(得分:1)

不要将查询构造为字符串,而是使用PyMongo方法查询数据库,例如:

coll.find({'_Ingredients': IngredientsHome[i]})

或者您可以传递Python列表并在查询中使用$in

coll.find({'_Ingredients': {'$in': IngredientsHome}})

Read more about how to use PyMongo here.