美文网首页
python中MongoDB save,insert,updat

python中MongoDB save,insert,updat

作者: 常怀德 | 来源:发表于2021-07-06 17:57 被阅读0次

一、 使用背景

在用python调用MongoDB操作文档时遇到过很多场景,常规操作是插入,更新,还有按条件替换,存储等。这些场景中用到过insert,update,replace,save。要是不理一下很容易被这几个方法搞糊涂。

二、 insert插入文档

1. 插入单个文档insert_one

当需要插入单个文档的时候用insert_one方法。

参数

insert_one(self, document, bypass_document_validation=False, session=None)

要插入的文档必须是可变映射类型(通常是字典)。如果文档没有 _id 字段,则会自动添加一个。

返回

insert_one() 方法返回 pymongo.results.InsertOneResult对象,该对象包含 inserted_id 属性,它是插入文档的 id 值。

使用实例:

>>> db.test.count_documents({'x': 1})
0
>>> result = db.test.insert_one({'x': 1})
>>> result.inserted_id
ObjectId('54f112defba522406c9cc208')
>>> db.test.find_one({'x': 1})
{u'x': 1, u'_id': ObjectId('54f112defba522406c9cc208')}

2.插入多个文档insert_many

当需要一次性插入多个文档时用insert_many()方法。

参数

insert_many(self, documents, ordered=True, bypass_document_validation=False, session=None)

该方法的第一参数是字典列表。

返回值

insert_many() 方法返回 pymongo.results.InsertManyResult对象,该对象包含 inserted_ids 属性,该属性保存着所有插入文档的 id 值。

使用实例

>>> db.test.count_documents({})
0
>>> result = db.test.insert_many([{'x': i} for i in range(2)])
>>> result.inserted_ids
[ObjectId('54f113fffba522406c9cc20e'), ObjectId('54f113fffba522406c9cc20f')]
>>> db.test.count_documents({})
2

注意:插入的时候可以指定_id。

三、 update更新文档

在MongoDB中可以使用update_one()方法更新文档。

参数和返回

update_one(self, filter, update, upsert=False, multi=False, bypass_document_validation=False,
                   collation=None, array_filters=None, session=None):
  • filter: 匹配要更新的文档的查询条件。
  • update:要修改的字段。
  • upsert(可选,默认为False):如果为“True”,如果没有文档匹配过滤器,则执行插入。
    如果查找到的匹配数据多于一条,则只会修改第一条。
  • multi(可选,默认为False):如果为“True”,则更新查询到的所有数据。
    update_one()方法只能修匹配到的第一条记录,如果要修改所有匹配到的记录,可以使用 update_many()

该方法返回pymongo.results.UpdateResult对象。

使用实例

>>> for doc in db.test.find():
...     print(doc)
...
{u'x': 1, u'_id': 0}
{u'x': 1, u'_id': 1}
{u'x': 1, u'_id': 2}
>>> result = db.test.update_one({'x': 1}, {'$inc': {'x': 3}})
>>> result.matched_count
1
>>> result.modified_count
1
>>> for doc in db.test.find():
...     print(doc)
...
{u'x': 4, u'_id': 0}
{u'x': 1, u'_id': 1}
{u'x': 1, u'_id': 2}

四、 save更新文档

MongoDB中还可以使用save来更新文档。

参数

save(self, to_save, manipulate=True, check_keys=True, **kwargs)

此方法已被官方弃用,推荐使用insert_one方法,和replace_one方法。

 **DEPRECATED** - Use :meth:`insert_one` or :meth:`replace_one` instead.

使用时会返回预警信息。

warnings.warn("save is deprecated. Use insert_one or replace_one "
                      "instead", DeprecationWarning, stacklevel=2)

五、 replace替换文档

当需要替换文档的时候可以使用MongoDB的replace方法。

参数

replace_one(self, filter, replacement, upsert=False, bypass_document_validation=False, 
                collation=None, session=None)
  • filter:匹配要替换的文档的查询条件。
  • replacement:新文件。
  • upsert(可选):如果为“True”,如果没有文档匹配过滤器,则执行插入。

返回

该方法返回pymongo.results.UpdateResult对象。

使用实例

>>> for doc in db.test.find({}):
...     print(doc)
...
{u'x': 1, u'_id': ObjectId('54f4c5befba5220aa4d6dee7')}
>>> result = db.test.replace_one({'x': 1}, {'y': 1})
>>> result.matched_count
1
>>> result.modified_count
1
>>> for doc in db.test.find({}):
...     print(doc)
...
{u'y': 1, u'_id': ObjectId('54f4c5befba5220aa4d6dee7')}


## 如果没有匹配到条件中的文档,使用upsert选项可以执行插入操作

>>> result = db.test.replace_one({'x': 1}, {'x': 1}, True)
>>> result.matched_count
0
>>> result.modified_count
0
>>> result.upserted_id
ObjectId('54f11e5c8891e756a6e1abd4')
>>> db.test.find_one({'x': 1})
{u'x': 1, u'_id': ObjectId('54f11e5c8891e756a6e1abd4')}

相关文章

  • python中MongoDB save,insert,updat

    一、 使用背景 在用python调用MongoDB操作文档时遇到过很多场景,常规操作是插入,更新,还有按条件替换,...

  • mongo增删该查

    MongoDB 插入文档MongoDB 使用 insert() 或 save() 方法向集合中插入文档,语法如下:...

  • mongodb基础操作之insert插入操作

    mongodb insert 操作分为四种:insert、save、insertOne、insertMany,下面...

  • MongonDB 插入文档和删除文档

    插入文档 MongoDB 使用 insert() 或 save() 方法向集合中插入文档,语法如下: 删除文档 M...

  • mongodb insert&save

    拥有两种方法一旦数据中包含_id,insert不插入相同的值,save则更新数据 批量插入 循环插入

  • MongoDB常用命令

    创建/删除数据库 创建/删除集合 插入文档 MongoDB 使用 insert() 或 save() 方法向集合中...

  • MongoDB的增删改查

    1.MongoDB的插入文档 MongoDB使用insert()和save()插入文档数据插入语法 实例 如果我们...

  • Spring Data MongoDB插入

    在Spring Data MongoDB中,使用save()和insert()方法可以插入一个或多个文档到数据库。...

  • mongodb文档操作

    插入文档 语法 mongodb使用insert() 或save()方法插入文档,语法如下: 实例 注:如果myCo...

  • mongodb增删改查来一套

    mongodb的基础就是针对文集的增删改查,在此只列一些基础的内容 insert 正常插入: 循环插入 updat...

网友评论

      本文标题:python中MongoDB save,insert,updat

      本文链接:https://www.haomeiwen.com/subject/zxegultx.html