Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python mongo中所有记录的下字段_Python_Mongodb - Fatal编程技术网

Python mongo中所有记录的下字段

Python mongo中所有记录的下字段,python,mongodb,Python,Mongodb,基本上,我的帐户设置如下: { 'email': 'Matt@GMAIL.com', 'others': '...' } 在sql中,我习惯于只搜索较低(email)=较低(search)的位置,但我发现在mongo中很难(而且很快)做到这一点 所以我试着做一些类似的事情: 更新帐户设置电子邮件=较低(电子邮件) 或: 你知道在Mongo怎么做吗 注:我使用的是PyMongo驱动程序我误解了你的问题。。 我只能使用python函数:) 我不理解你的问题。。 我只能使用python函数:)

基本上,我的帐户设置如下:

{
 'email': 'Matt@GMAIL.com',
 'others': '...'
}
在sql中,我习惯于只搜索较低(email)=较低(search)的位置,但我发现在mongo中很难(而且很快)做到这一点

所以我试着做一些类似的事情:

更新帐户设置电子邮件=较低(电子邮件)

或:

你知道在Mongo怎么做吗


注:我使用的是PyMongo驱动程序

我误解了你的问题。。 我只能使用python函数:)


我不理解你的问题。。 我只能使用python函数:)


我为您制作了一个更简洁的代码。:)


要回答下面的评论。。。“以您的示例为例,用户名==”John“,如何将他的用户名和其他人的用户名转换为小写?”

您需要进行一个查询,其中包含您想要的所有用户的共同点(这是目前的基本编程)。您可以进行类似于
{'username':{'exists':True}
{'grade':'member'}
的查询。在这里,它将返回每个用户,或每个成员用户(因为这是一个仅包含用户的集合)

然后,使用
**kwargs
,使用您希望更新的值进行更新。诚然,现在这个问题还没有得到回答,因为您需要将arg
func
添加到
update\u query\u in\u table
中,使其像一个符咒一样工作,如下所示:

def update_query_in_table(table, query, action='$set',
        multi=False, func=lambda x: x, **kwargs):
    """ Updates user information using **kwargs.
        Either updates using action='$set' or deletes using action='$unset'
    """
    update = {action : {}}
    for key, value in kwargs.iteritems():
        # By default, func does nothing.
        update[action][key] = func(value)

    upd = table.update(query, update, multi=multi)
默认情况下,func不做任何事情,但是您可以使用
update(…),func=lambda x:x.lower())使它做一些事情。但是我们只是装饰一个函数,使更新更干净更容易(这是pythonic,IMHO).我想让您注意的是多个选项,这正是您所寻求的

最初,您希望执行以下操作:

# Considering update_many() works, as I always use "update". :)
accounts.update_many({}, {
            '$set': {
                'email': lower(email)
            }
        }, upsert=False)
你本可以做到:

# Considering update_many() works, as I always use "update". :)
accounts.update_many({}, {
            '$set': {
                'email': lower(email)
            }
        }, upsert=False, multi=True)

我希望这能有所帮助。

我为您编写了一个更简洁的代码。:)


要回答下面的评论…“给出您的示例,用户名==”John“,如何将他的用户名和其他人的用户名转换为小写?”

您需要使用所有用户的共同点进行查询(这是目前的基本编程)。您可以进行如下查询:
{'username':{'exists':True}
,或
{'grade':'member'}
。在这里,它将返回每个用户,或每个成员用户(因为这是一个只有用户的集合)

然后,使用
**kwargs
,使用您希望更新的值进行更新。诚然,现在这个问题还没有得到回答,因为您需要将arg
func
添加到
update\u query\u in\u table
中,使其像一个符咒一样工作,如下所示:

def update_query_in_table(table, query, action='$set',
        multi=False, func=lambda x: x, **kwargs):
    """ Updates user information using **kwargs.
        Either updates using action='$set' or deletes using action='$unset'
    """
    update = {action : {}}
    for key, value in kwargs.iteritems():
        # By default, func does nothing.
        update[action][key] = func(value)

    upd = table.update(query, update, multi=multi)
默认情况下,func不做任何事情,但是您可以使用
update(…),func=lambda x:x.lower())使它做一些事情。但是我们只是装饰一个函数,使更新更干净更容易(这是pythonic,IMHO).我想让您注意的是多个选项,这正是您所寻求的

最初,您希望执行以下操作:

# Considering update_many() works, as I always use "update". :)
accounts.update_many({}, {
            '$set': {
                'email': lower(email)
            }
        }, upsert=False)
你本可以做到:

# Considering update_many() works, as I always use "update". :)
accounts.update_many({}, {
            '$set': {
                'email': lower(email)
            }
        }, upsert=False, multi=True)

我希望这会有所帮助。

据我所知,您还不能在PyMongo(进程函数)中执行此操作。据我所知,您还不能在PyMongo(进程函数)中执行此操作.是的…我很害怕…好吧,我会把它标记为已解决,因为我不认为有一个“简单”的答案。是的…我很害怕…好吧,我会把它标记为已解决,因为我不认为有一个“简单”的答案。这是很好的代码和所有内容,但不会回答问题。举个例子,用户名=“John”,如何将他的用户名和其他人的用户名转换为小写?你的代码与我的代码有相同的缺陷。我在其中留下了大写字母,如果有人试图以“john”的身份登录,它将失败。我为您对我的帖子进行了一次干净的更新,我希望它能让您对您最初的问题有更多的了解。可能有点长,但我请您阅读它并给出您的意见。:)这是很好的代码,但并没有回答问题。举个例子,用户名==“John”,如何将他的用户名和其他人的用户名转换为小写?你的代码与我的代码有相同的缺陷。我在其中留下了大写字母,如果有人试图以“john”的身份登录,它会失败。我为您对我的帖子做了一个干净的更新,我希望它能让您对您最初的问题有更多的了解。它可能有点长,但我邀请您阅读它并给出您的意见。:)