前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MongoDB的CRUD操作讲解-1-insert

MongoDB的CRUD操作讲解-1-insert

作者头像
字母哥博客
发布2020-09-23 11:16:32
3690
发布2020-09-23 11:16:32
举报
文章被收录于专栏:写字母的代码哥

插入操作

代码语言:javascript
复制
//插入一条数据
db.inventory.insert(
{
    item: "ABC1",
    details: {
        model: "14Q3",
        manufacturer: "XYZ Company"
    },
    stock: [ { size: "S", qty: 25 }, { size: "M", qty: 50 } ],
        category: "clothing"
    }
)
//验证插入是否成功
db.inventory.find()
//插入一组数据
var mydocuments =
[
    {
        item: "ABC2",
        details: { model: "14Q3", manufacturer: "M1 Corporation" },
        stock: [ { size: "M", qty: 50 } ],
        category: "clothing"
    },
    {
        item: "MNO2",
        details: { model: "14Q3", manufacturer: "ABC Company" },
        stock: [ { size: "S", qty: 5 }, { size: "M", qty: 5 }, { size: "L", qty: 1 } ],
        category: "clothing"
    },
    {
        item: "IJK2",
        details: { model: "14Q2", manufacturer: "M5 Corporation" },
        stock: [ { size: "S", qty: 5 }, { size: "L", qty: 1 } ],
        category: "houseware"
    }
];  
db.inventory.insert(mydocuments);
//使用Bulk进行批量插入
var bulk = db.inventory.initializeUnorderedBulkOp();
bulk.insert(
    {
            item: "BE10",
            details: { model: "14Q2", manufacturer: "XYZ Company" },
            stock: [ { size: "L", qty: 5 } ],
            category: "clothing"
    }
);
bulk.insert(
    {
            item: "ZYT1",
            details: { model: "14Q1", manufacturer: "ABC Company" },
            stock: [ { size: "S", qty: 5 }, { size: "M", qty: 5 } ],
            category: "houseware"
    }
);
bulk.execute();

比较insert和save方法

insert方法的源码

代码语言:javascript
复制
> db.user.insert
function (obj, _allow_dot) {
    if (!obj) {
        throw "no object passed to insert!";
    }
    if (!_allow_dot) {
        this._validateForStorage(obj);
    }
    if (typeof obj._id == "undefined" && !Array.isArray(obj)) {
        var tmp = obj;
        obj = {_id:new ObjectId};
        for (var key in tmp) {
            obj[key] = tmp[key];
        }
    }
    this._db._initExtraInfo();
    this._mongo.insert(this._fullName, obj);
    this._lastID = obj._id;
    this._db._getExtraInfo("Inserted");
}

save方法的源码

代码语言:javascript
复制
> db.user.save
function (obj) {
    if (obj == null || typeof obj == "undefined") {
        throw "can't save a null";
    }
    if (typeof obj == "number" || typeof obj == "string") {
        throw "can't save a number or string";
    }
    if (typeof obj._id == "undefined") {
        obj._id = new ObjectId;
        return this.insert(obj);
    } else {
        return this.update({_id:obj._id}, obj, true);
    }
}

区别:

  • 首先要知道,_id是唯一索引,在同一个集合内不能重复
  • 当使用insert方法,插入一条重复的id的文档时,文档插入失败
  • 当时用save方法,插入一条重复的id的文档时,save采用的方法是属性字段更新替换,id不变。

喜欢 (0)or分享 (0)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-02-05),如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 插入操作
  • 比较insert和save方法
    • insert方法的源码
      • save方法的源码
        • 区别:
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档