pymongo使用find()查询数组总是失败

时间:2018-07-08 07:37:31

标签: python arrays mongodb-query find pymongo

我已经搜索了大约半个晚上,但似乎无法理解或发现我的错误。

我正在尝试连接到MongoDB并在表中搜索特定的字符串。我不在乎字符串在哪个字段中,只是在行中的任何一个字段包含字符串的情况下,它都应该返回“名称”字段的内容。

我尝试了多种不同的编写方式,而且我似乎总是想出一些类似的方法:

search_for_mapname(mpname):

    # create the MongoDB client and connect to the database
    dbclient = pymongo.MongoClient(dbtoken)

    # check for mpname
    cursor = dbclient.database.maps.find( { 'name': mpname, "$or":[{"aliases":mpname}] } )
    for map in cursor:
        return map['name']
    return "INVALID"

每行的结构如下:

{ 'name': "ff_2fort", 'aliases': ["2fort", "2", "alias"] }

find()似乎可以在mpname == maps['name']时识别出来,但是当我输入一个已知存在的别名时,每次都会得到“ INVALID”。

1 个答案:

答案 0 :(得分:0)

我发现了自己的错误,$或它的工作方式不像我上面写的那样,实际上应该这样写:

cursor = dbclient.FortressForever.maps.find( { "$or":[ {"name": mpname}, {"aliases":mpname}] } )