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。
两种方式:
- $currentDate 操作符,将 sdate 字段的值设为当前时间,true 表示要更新该字段
- 使用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
}
}
}
}
])