- find() 可以接受一个对象作为条件参数 {_id:"hello"}
- findOne() 查询符合条件的第一个
- 查询指定的字段,在 find({},{name:1,age:0}) 中添加参数,1:显示、0:不显示。
update
db.<collection>.update(查询条件,新对象)
默认情况下使用新对象来替换旧对象
如果需要修改指定的属性,而不是替换。需要使用 “修改操作符” 来完成修改
$set 可以用来修改文档中的指定属性
$unset 可以用来删除文档中的指定属性
update() 默认只会修改一个,是如下两个的综合
修改多个需要添加一个参数 multi:true
# 7. users 集合中的 username 为 孙悟空文档 添加一个 address 属性
db.users.update({username:"孙悟空"},{$set:{address:"花果山"}});
# 8. 使用 唐僧 替换 usernamer 为 猪八戒的文档
db.users.replaceOne({username:"唐僧"},{username:"猪八戒"});
# 9. 删除 username 为 孙悟空 的文档
db.users.update({username:"孙悟空"},{$unset:{address:"花果山"}});
# 10. 向 孙悟空 添加一个 hoppy:{cities:["beijing","shanghai","shenzhen"],movies:["sanguo","hero"]}
db.users.update({username:"孙悟空"},{$set:{hoppy:{cities:["beijing","shanghai","shenzhen"],movies:["sanguo","hero"]}}});
# 11. 向 唐僧 添加一个 hoppy:{movies:["sanguo","hero"]}
db.users.update({username:"唐僧"},{$set:{hoppy:{movies:["sanguo","hero"]}}});
# 12. 查询喜欢 hero 的文档(数组包含)
# MongoDB 支持直接通过内嵌文档的属性进行查询,如果要查询内嵌文档则可以通过 . 的形式来匹配。
# 如果要通过内嵌文档来对文档进行查询,此时属性名必须使用引号 单双都支持
db.users.find({"hoppy.movies":"hero"});
# 13. 向 唐僧 中添加一个新电影 Interstellar(数组添加)
# $push 用于向数组中添加一个新的元素
db.users.update({username:"唐僧"},{$push:{"hoppy.movies":"Interstellar"}});
# $addToSet 向数组中添加一个新元素,如果数组中存在该元素 则不会添加
db.users.update({username:"唐僧"},{$addToSet:{"hoppy.movies":"Interstellar"}});
# 14. 删除喜欢 beijing 的用户
db.users.remove({"hoppy.cities":"beijing"});
# 15. 删除 users 集合
db.users.drop();
# 16. 向 numbers 中插入 20000 条数据
# 方法1(这个竟然能写for循环,真棒)
for(var i=1;i<=20000;i++){
db.numbers.insert({num:i});
# 方法2(既然能写for循环,那就可以写 js 代码,刷新了我对数据库的认知)
var arry=[];
for(var i=1;i<=20000;i++){
arr.push({num:i});
db.numbers.insert(arry);
# 查看总条数
db.numbers.find().count();
# 17. number 大于 500 ,具体的查询还需要看官方文档 如:图1
db.numbers.find({num:{$gt:500}});
# 18. 大于 40 小于 50
db.numbers.find({num:{$gt:40,$lt:50}});
# 19. 查询前 10 条数据
db.numbers.find().limit(10);
# 20. 查询第 11 - 20 条
db.numbers.find().skip(10).limit(10);
文档之间的关系
因为 MongoDB 中存的是 json 所以我们可以理解为就是 嵌套类/嵌套json