我试图在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查询开头有多少表达式时,是否有类似的方法或其他方式来进行此查询?
答案 0 :(得分:1)
不要将查询构造为字符串,而是使用PyMongo方法查询数据库,例如:
coll.find({'_Ingredients': IngredientsHome[i]})
或者您可以传递Python列表并在查询中使用$in
:
coll.find({'_Ingredients': {'$in': IngredientsHome}})