当前位置: 首页 > article >正文

mongodb文档操作1

mongodb文档操作1

  • mongodb文档操作1
    • 插入操作
      • 1. 使用方法insert()分别插入以下文档到集合stu中。
      • 2. 使用方法insertMany()插入以下一组文档到集合stu中。
    • 删除文档操作
      • 1. 删除stu集合中name为Jasper的所有文档。
    • 更新文档操作
      • 1. 给stu集合中的所有文档都增加字段favorite,其值是一个数组[“football”, “basketball”]。
      • 2. 给stu集合中name为Kim的文档中,修改favorite字段的值为table tennis。
      • 3. 给stu集合中name为Jack的文档中,增加favorite字段的值为yoga。
      • 4. 给stu集合中name为Jack的文档中,给其favorite字段一次性增加多个值,包括yoga,table tennis,jogging。注意这里的favorite字段值看作是数据集,避免重复。
      • 5. 给stu集合中name为Kerry的文档中,给其favorite字段一次性增加多个值,包括yoga,table tennis,jogging,但favorite字段的取值只保留后4个元素。
      • 6. 给stu集合中name为Jack的文档中,将其favorite字段的数组值中,删除第一个元素football。
      • 7. 给stu集合中name为Peter的文档删除favorite字段。
      • 8. 给stu集合中所有文档增加字段score,其值为一个内嵌文档的数组[{"chinese":80},{"computer":79},{"programming":98}]。将name为Peter的语文分数直接修改为100。
      • 9. 给stu集合中name为Jack的文档中,计算机科目的分数加10。
      • 10. 给stu集合中,所有字段名称为name重命名为stu_name.
      • 11. 将stu集合中,名字为"Jack"和"Kim"的学生文档增加当前时间字段sdate。
      • 12.stu集合中,利用批量写操作完成更新操作
    • 完整脚本

mongodb文档操作1

插入操作

1. 使用方法insert()分别插入以下文档到集合stu中。

{“name”: “Kerry”, “score”:85}
{“name”: ”Peter”, “score”:90}
{“name”: “Kim”, “score”:70}

db.stu.insert({"name":"Kerry","score":85});
db.stu.insert({"name":"Peter","score":90});
db.stu.insert({"name":"Kim","score":70});

2. 使用方法insertMany()插入以下一组文档到集合stu中。

{“name”: “Jack”, “score”:90}
{“name”: “Jasper”, “score”: 87}

db.stu.insertMany([
	{"name":"Jack","score":90},
	{"name":"Jasper","score":87},
]);

删除文档操作

1. 删除stu集合中name为Jasper的所有文档。

db.stu.remove({"name":"Jasper"});

更新文档操作

1. 给stu集合中的所有文档都增加字段favorite,其值是一个数组[“football”, “basketball”]。

通过$set对字段进行设置

for(let i of db.stu.find().toArray()){
	db.stu.update(i,{$set:{"favorite":[
	"football","basketball"
	]}})
}

2. 给stu集合中name为Kim的文档中,修改favorite字段的值为table tennis。

db.stu.update({"name":"Kim"},{$set:{"favorite":"table tennis"}});

3. 给stu集合中name为Jack的文档中,增加favorite字段的值为yoga。

使用$push进行添加数组元素操作,无论原始数组是否有重复都会添加

db.stu.update({"name":"Jack"},{$push:{"favorite":"yoga"}},{upsert:true});

4. 给stu集合中name为Jack的文档中,给其favorite字段一次性增加多个值,包括yoga,table tennis,jogging。注意这里的favorite字段值看作是数据集,避免重复。

使用$addToSet保证更新数组方式监测原始数组中是否含有相同的元素,有则不更新,无则更新

for (let i of["yoga", "table tennis", "jogging"]) {
    db.stu.update({
        "name": "Kerry"
    }, {
        $addToSet: {
            "favorite": i
        }
    });
};

5. 给stu集合中name为Kerry的文档中,给其favorite字段一次性增加多个值,包括yoga,table tennis,jogging,但favorite字段的取值只保留后4个元素。

$push 表示要对 favorite 字段进行增加操作
{ $each: ["yoga", "table tennis", "jogging"], $slice: -4 } 表示要增加的多个值,其中$each表示一次性增加多个值,$slice 表示只保留最后的 4 个元素

db.stu.update({
    "name": "Kerry"
}, {
    $push: {
        "favorite": {
            $each: ["yoga", "table tennis", "jogging"],
            $slice:  -4
        }
    }
})

6. 给stu集合中name为Jack的文档中,将其favorite字段的数组值中,删除第一个元素football。

$pop 表示要对 favorite 字段进行删除操作,-1 表示删除数组的第一个元素

db.stu.update(
   { name: "Jack" },
   { $pop: { favorite: -1 } }
)

7. 给stu集合中name为Peter的文档删除favorite字段。

$unset 表示要删除指定的字段,favorite 表示要删除的字段名,“” 表示要删除的字段值(此处为空字符串)

db.stu.update(
   { name: "Peter" },
   { $unset: { favorite: "" } }
)

8. 给stu集合中所有文档增加字段score,其值为一个内嵌文档的数组[{“chinese”:80},{“computer”:79},{“programming”:98}]。将name为Peter的语文分数直接修改为100。

db.stu.updateMany(
    {},
    {
        $set: {
            score: [{
                "chinese": 80
            }, {
                "computer": 79
            }, {
                "programming": 98
            }]
        }
    }
)

db.stu.update(
    {
        name: "Peter"
    },
    {
        $set: {
            "score.0.chinese": 100
        }
    }
)

9. 给stu集合中name为Jack的文档中,计算机科目的分数加10。

如果 score 字段中的内嵌文档数组中不存在 computer 字段,则执行$inc 操作时会自动创建该字段并设置初始值为 0

db.stu.update(
    {
        "name": "Jack"
    },
    {
        $inc: {
            "score.1.computer": 10
        }
    }
)

10. 给stu集合中,所有字段名称为name重命名为stu_name.

使用 $rename 操作符,将 name 字段重命名为 stu_name

db.stu.updateMany(
    {},
    {
        $rename: {
            "name": "stu_name"
        }
    }
)

11. 将stu集合中,名字为"Jack"和"Kim"的学生文档增加当前时间字段sdate。

两种方式:

  1. $currentDate 操作符,将 sdate 字段的值设为当前时间,true 表示要更新该字段
  2. 使用new Date() 获取时间然后加入
var stime = new Date()

db.stu.updateMany(
    {
        "stu_name": {
            $in: ["Jack", "Kim"]
        }
    },
    {
        $set: {
            "sdate": stime
        }
    }
)

//-------------------------------------------------------------
db.stu.updateMany(
    {
        "stu_name": {
            $in: ["Jack", "Kim"]
        }
    },
    {
        $currentDate: {
            "sdate": true
        }
    }
)

12.stu集合中,利用批量写操作完成更新操作

包括插入3条文档记录,并更新2条文档记录。
插入文档信息:
{“_id”:10,“stu_name”:“张三”,“favorite”:[“badminton”,“swimming”]}
{“_id”:11,“stu_name”:“自己姓名”,“favorite”:[“piano”,“yoga”]}
{“_id”:12,“stu_name”:“张依”,“favorite”:{“swimming”:10,“jogging”:3}}
更新_id为10的文档记录,将喜欢的badminton运动改为yoga.
更新_id为12的文档记录,将jogging运动的喜欢程度从3变为9.

db.stu.bulkWrite([
    {
        insertOne: {
            document: {
                "_id": 10,
                "stu_name": "张三",
                "favorite": ["badminton", "swimming"]
            }
        }
    },
    {
        insertOne: {
            document: {
                "_id": 11,
                "stu_name": "syf20020816@outlook.com",
                "favorite": ["piano", "yoga"]
            }
        }
    },
    {
        insertOne: {
            document: {
                "_id": 12,
                "stu_name": "张依",
                "favorite": {
                    "swimming": 10,
                    "jogging": 3
                }
            }
        }
    },
    {
        updateOne: {
            filter: {
                "_id": 10
            },
            update: {
                $set: {
                    "favorite.0": "yoga"
                }
            }
        }
    },
    {
        updateOne: {
            filter: {
                "_id": 12
            },
            update: {
                $set: {
                    "favorite.jogging": 9
                }
            }
        }
    }
])

完整脚本

db.createCollection('stu');

db.stu.insert({
    "name": "Kerry",
    "score": 85
});
db.stu.insert({
    "name": "Peter",
    "score": 90
});
db.stu.insert({
    "name": "Kim",
    "score": 70
});

db.stu.insertMany([
    {
        "name": "Jack",
        "score": 90
    },
    {
        "name": "Jasper",
        "score": 87
    },
    
]);

db.stu.remove({
    "name": "Jasper"
});

for (let i of db.stu.find().toArray()) {
    db.stu.update(i, {
        $set: {
            "favorite": [
                "football",
                "basketball"
            ]
        }
    })
}

db.stu.find().toArray();

db.stu.update({
    "name": "Kim"
}, {
    $set: {
        "favorite": "table tennis"
    }
});

db.stu.update({
    "name": "Jack"
}, {
    $push: {
        "favorite": "yoga"
    }
}, {
    upsert: true
});

for (let i of["yoga", "table tennis", "jogging"]) {
    db.stu.update({
        "name": "Jack"
    }, {
        $addToSet: {
            "favorite": i
        }
    });
}



for (let i of["yoga", "table tennis", "jogging"]) {
    db.stu.update({
        "name": "Kerry"
    }, {
        $addToSet: {
            "favorite": i
        }
    });
};


db.stu.update({
    "name": "Kerry"
}, {
    $push: {
        "favorite": {
            $each: ["yoga", "table tennis", "jogging"],
            $slice: - 4
        }
    }
})

db.stu.update(
    {
        name: "Jack"
    },
    {
        $pop: {
            favorite: - 1
        }
    }
)

db.stu.update(
    {
        name: "Peter"
    },
    {
        $unset: {
            favorite: ""
        }
    }
)



db.stu.updateMany(
    {},
    {
        $set: {
            score: [{
                "chinese": 80
            }, {
                "computer": 79
            }, {
                "programming": 98
            }]
        }
    }
)

db.stu.update(
    {
        name: "Peter"
    },
    {
        $set: {
            "score.0.chinese": 100
        }
    }
)


db.stu.update(
    {
        "name": "Jack"
    },
    {
        $inc: {
            "score.1.computer": 10
        }
    }
)


db.stu.updateMany(
    {},
    {
        $rename: {
            "name": "stu_name"
        }
    }
)

var stime = new Date()

db.stu.updateMany(
    {
        "stu_name": {
            $in: ["Jack", "Kim"]
        }
    },
    {
        $set: {
            "sdate": stime
        }
    }
)


db.stu.updateMany(
    {
        "stu_name": {
            $in: ["Jack", "Kim"]
        }
    },
    {
        $currentDate: {
            "sdate": true
        }
    }
)

db.stu.bulkWrite([
    {
        insertOne: {
            document: {
                "_id": 10,
                "stu_name": "张三",
                "favorite": ["badminton", "swimming"]
            }
        }
    },
    {
        insertOne: {
            document: {
                "_id": 11,
                "stu_name": "syf20020816@outlook.com",
                "favorite": ["piano", "yoga"]
            }
        }
    },
    {
        insertOne: {
            document: {
                "_id": 12,
                "stu_name": "张依",
                "favorite": {
                    "swimming": 10,
                    "jogging": 3
                }
            }
        }
    },
    {
        updateOne: {
            filter: {
                "_id": 10
            },
            update: {
                $set: {
                    "favorite.0": "yoga"
                }
            }
        }
    },
    {
        updateOne: {
            filter: {
                "_id": 12
            },
            update: {
                $set: {
                    "favorite.jogging": 9
                }
            }
        }
    }
])


http://www.kler.cn/a/1308.html

相关文章:

  • vs2022编译webrtc步骤
  • lombok在高版本idea中注解不生效的解决
  • 案例研究:UML用例图中的结账系统
  • HarmonyOS中实现TabBar(相当于Android中的TabLayout+ViewPager)
  • 【 Verdi实用技巧-Part-3】
  • 计算机网络之---局域网
  • 【C语言经典例题】求最小公倍数
  • 长肥网络与TCP的长肥管道
  • 漫画:什么是选择排序?
  • 比df更好用的命令!
  • 一行代码“黑”掉任意网站
  • 关键字 const
  • 没有关系的话,那就去建立关系吧
  • 各种交叉编译工具链的区别
  • 【宝塔面板部署nodeJs项目】网易云nodeJs部署在云服务器上,保姆级教程,写网易云接口用自己的接口不受制于人
  • 第一个 Qt 程序
  • 数论作业 —— 公约数公倍数问题
  • 【数据结构】还不懂算法复杂度?一文带你速解
  • 【linux】多线程概念详述
  • OpenCV实战——拟合直线
  • 7个最受欢迎的Python库,大大提高开发效率
  • 设计模式之单例模式~
  • 9. C#面向对象基础
  • 同一片天空共眠,同一个梦想奋斗《大抠车始歌》(1)
  • Nacos 注册中心 - 健康检查机制源码
  • jupyter的安装和使用