有一种通过将字段字符串与值数组匹配来在mongo中查找记录的方法

问题描述 投票:0回答:2

我有以下记录

{
   "title": "Kim floral jacquard minidress",
   "designer": "Rotate Birger Christensen"
}

我如何使用值数组在集合中查找记录。例如,我有以下数组值。因为“标题”字段包含“花卉”值,所以选择了该记录。

['floral', 'dresses']

我在下面使用的查询不起作用。 :(

queryParam = ['floral', 'dresses']

def get_query(queryParam, gender):
        query = {
            "gender": gender
        }

        if (len(queryParam) != 0):
            query["title"] = {"$in": queryParam}

        return query

products_query = get_query(query, gender)
products = mongo.db.products.find(products_query)
python mongodb mongodb-query pymongo
2个回答
0
投票

您需要与$in运算符一起进行正则表达式搜索:

db.collectionName.find( { title: { $in: [ /floral/, /dresses/ ] } })

0
投票

要添加到上一个答案中,还有很多工作要做,才能使其在pymongo中起作用。您必须使用re.compile()才能使正则表达式搜索生效:

re.compile()

或者,您可以使用这种方法来消除对import re queryParam = [re.compile('floral'), re.compile('dresses')] 运算符的需要:

$in

并且一旦完成,您甚至不需要使用re.compile:

import re
queryParam = [re.compile('floral|dresses')]

选择您的选择。

© www.soinside.com 2019 - 2024. All rights reserved.