MongoDB数据插入方法汇总
-
1、概述
- 在mongodb中有三种方法可以实现新数据的插入,其中常用的插入方法是db.collection.insert();另外,db.collection.save()方法和db.collection.update()方法也能通过upset操作添加文档;upset操作可以更新现有文档也可以插入不存在的新文档。
2、insert()方法
- 使用insert()方法向users集合中插入一个文档:
MongoDB Enterprise > db.users.insert({ID:001,NAME:'Jery',Phone:13562541256}); WriteResult({ "nInserted" : 1 }) MongoDB Enterprise > db.users.find() { "_id" : ObjectId("5833f4ef90f970074d8b9db8"), "ID" : 1, "NAME" : "Jery", "Phone" : 13562541256 } MongoDB Enterprise >
3、save()方法
- 使用save()方法插入一个文档,下面的示例创建一个新的文档在users集合中:
MongoDB Enterprise > db.users.save({ID:002,NAME:'Jack',Phone:13562541256}); WriteResult({ "nInserted" : 1 }) MongoDB Enterprise > db.users.find() { "_id" : ObjectId("5833f4ef90f970074d8b9db8"), "ID" : 1, "NAME" : "Jery", "Phone" : 13562541256 } { "_id" : ObjectId("5833f63790f970074d8b9db9"), "ID" : 2, "NAME" : "Jack", "Phone" : 13562541256 } //使用save()方法新增的一条文档 MongoDB Enterprise >
4、update()方法
- 调用update()方法使用upsert标志来新增一个没有匹配查询条件的文档。
MongoDB Enterprise > db.users.update({ID:003,NAME:'Lucy'},{$set: {Phone:12345678910}},{upsert: true}); WriteResult({ "nMatched" : 0, "nUpserted" : 1, "nModified" : 0, "_id" : ObjectId("5833fa340e2db90f979bc1f6") }) MongoDB Enterprise > db.users.find() { "_id" : ObjectId("5833f4ef90f970074d8b9db8"), "ID" : 1, "NAME" : "Jery", "Phone" : 13562541256 } { "_id" : ObjectId("5833f63790f970074d8b9db9"), "ID" : 2, "NAME" : "Jack", "Phone" : 13562541256 } //使用save()方法新增的一条文档 { "_id" : ObjectId("5833fa340e2db90f979bc1f6"), "ID" : 3, "NAME" : "Lucy", "Phone" : 12345678910 } //使用update()方法新增的一条文档 MongoDB Enterprise >
4、小结
使用save()方法,如果集合中不存在此文档,则向集合中插入该文档;如果已经存在,save会调用update更新此文档,而insert()则会忽略。
save()方法在插入文档时,首先需要遍历集合,然后再一个个插入文档; insert()方法,不需要遍历集合,而是一次性插入,执行效率高。
update()方法是用作数据更新操作的,如果存在此文档则更新;如果不存在此文档则把要更新的文档插入到集合中。
-
補充說明:
非原地update,性能會很差
update文檔時,如果新文檔的空間占用大於舊文檔加上它周圍padding的空間,那麼就會放棄原來的位置,把數據拷貝到新空間。
參考:《MongoDB——The Definitive Guide 2nd Edition》 page43
-
-
直接抓書上說明: