python - 从 mongodb、python3 中的字符串进行查询

标签 python mongodb python-3.x pymongo

我试图在 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}})

Read more about how to use PyMongo here.

关于python - 从 mongodb、python3 中的字符串进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44284040/

相关文章:

python - 无法在ansible模块中导入MySQLdb

mongodb - 为什么json.RawMessage扩大mongoDb文档大小?

mongodb - 检查goLang中的mongodb集合中是否存在数据?

java - 无法连接到 Bluemix 中的 mongodb,找不到证书路径

带有for循环的Python列表迭代

python - 使用optimize.curve_fit函数的结果不是正确的 float 组

python - 将 self 传递给python中的构造函数

python - Tkinter 包布局 : Elastic band analogy

python - 按行组合 Pandas 数据帧的有效方法

python-3.x - 切换音乐开/关 Kivy