我试图在 mongodb 中进行查询,但我不知道从一开始就有多少变量。 您得到一个包含变量(字符串)的数组,然后 mongo 应通过 $or 运算符返回,这样就不会出现重复项。
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": “字符串”})
。当我不知道 mongodb 查询从一开始就有多少个表达式时,是否有类似的方法或其他方法来进行此查询?
最佳答案
不要将查询构造为字符串,而是使用 PyMongo 方法来查询数据库,例如:
coll.find({'_Ingredients': IngredientsHome[i]})
或者您可以传递 Python 列表并在查询中使用 $in
:
coll.find({'_Ingredients': {'$in': IngredientsHome}})
关于python - 从 mongodb、python3 中的字符串进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44284040/