Mongodb 如何在Pymongo中选择多个列并应用;其中;条款

Mongodb 如何在Pymongo中选择多个列并应用;其中;条款,mongodb,pymongo,Mongodb,Pymongo,我有诸如columns=db['WDIData']之类的数据。find_one().keys()返回: Out[121]: dict_keys(['_id', 'Country Name', 'Country Code', 'Indicator Name', 'Indicator Code', '1960', '1961', '1962', '1963', '1964', '1965', '1966', '1967', '1968', '1969', '1970', '1971', '1972'

我有诸如
columns=db['WDIData']之类的数据。find_one().keys()
返回:

Out[121]: dict_keys(['_id', 'Country Name', 'Country Code', 'Indicator Name', 'Indicator Code', '1960', '1961', '1962', '1963', '1964', '1965', '1966', '1967', '1968', '1969', '1970', '1971', '1972', '1973', '1974', '1975', '1976', '1977', '1978', '1979', '1980', '1981', '1982', '1983', '1984', '1985', '1986', '1987', '1988', '1989', '1990', '1991', '1992', '1993', '1994', '1995', '1996', '1997', '1998', '1999', '2000', '2001', '2002', '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016', '2017'])
样本:
db['WDIData'].find_one()

年份:

regex = re.compile("[0-9]{4}")
years = list(filter(regex.search, columns))
year = years[40]
Out[132]:“2000”

data = db['WDIData'].find({}, {'_id': 1, 'Country Name': 1, 'Country Code': 1, 'Indicator Name': 1, 
         'Indicator Code': 1, year: 1})
它可以工作,但我不知道我现在在哪里使用
。我在寻找这样的东西:
data=db['WDIData']。查找({'u id':0,'国家名称':1,'指标名称':1,年份:1})。其中({'Indicator Name':ind})


但是GetTypeError:代码必须是str的实例。不确定如何处理这个问题。它应该是直观的,不是吗?

光标对象没有
.where
方法。您需要使用filter参数。见文件

您需要首先使用过滤器选项选择文档,然后投影字段

db['WDIData'].find(
    {'Indicator Name': ind},
    {
        'Country Name': 1, 
        'Country Code': 1, 
        'Indicator Name': 1, 
        'Indicator Code': 1, 
        'year': 1
    }
)

多亏了一个建议,我才找到了答案。它在
中。查找
方法。只需按正确的顺序传递参数,使其充当where并选择:

cur = db['WDIData'].find({'Indicator Name': ind}, {'_id': 0, 'Country Name': 1, 'Country Code': 1, year: 1})
cur = db['WDIData'].find({'Indicator Name': ind}, {'_id': 0, 'Country Name': 1, 'Country Code': 1, year: 1})