mongodb文档操作1
创始人
2025-05-30 11:09:02

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

相关内容

热门资讯

[黑科技实测]“长虹大厅怎么装... [黑科技实测]“长虹大厅怎么装挂!”!确实真的有挂您好:长虹大厅这款游戏可以开挂,确实是有挂的,需要...
实测推荐“ 奇迹联盟有没有辅助... 您好:奇迹联盟这款游戏可以开挂,确实是有挂的,需要了解加客服微信【5537821】很多玩家在这款游戏...
[科技揭秘]“山西扣点怎么装挂... [科技揭秘]“山西扣点怎么装挂!”!原来真的有挂您好:山西扣点这款游戏可以开挂,确实是有挂的,需要了...
模块化技术 前端模块化1.什么是前端模块化将复杂的程序根据规则或者规范拆分成若干模块,一个模块包括...
我来教教您「衢州都莱」是不是有... 我来教教您「衢州都莱」是不是有挂!其实是有挂亲,衢州都莱这个游戏其实有挂的,确实是有挂的,需要了解加...