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
                }
            }
        }
    }
])