ajax的优点
- 允许你根据用户事件来更新页面内容
- 无需刷新页面而与服务端进行通信
ajax的缺点
- 没有游览历史,不能回退
- 存在跨域问题 a.com不能直接向b.com发送请求
- seo不太友好 爬虫爬不到ajax请求返回然后经过js动态创建的数据
http超文本传输协议详解
mongo命令
更新操作 update
-
将_id为hello的文档替换为:对象{age:16}
-
命令格式 db.collections.update(查找条件,新对象) 默认情况下使用新对象替换旧的对象
db.stus.update({_id:‘hello’},{age:16})
-
KaTeX parse error: Expected '}', got 'EOF' at end of input: …s.update(查询条件,{set:更改哪些条件的对象})
例子:
将_id为xxx的对象的的hobby修改为‘读书’
db.stus.update({"_id" : ObjectId(“61adec37fcba3ff57245ef21”)},{$set:{hobby:‘读书’}})
- 删除指定属性 db.collections.update(查询对象条件,{KaTeX parse error: Expected 'EOF', got '}' at position 18: …set: 要删除对象属性的条件}̲) 例子: 删除某文档的age…unset:{age:23}})
注意:删库一般非常少用,在实际开发中,新加一个属性代表在前端是否显示
命令练习
- use my_test
2. db.user.insert({name:‘dage’})
3. db.user.find() 或者在括号中加入{}
4. db.user.insert([{name:‘pig’,age:12},{name:‘dage’,age:0}]) 插入了两条数据
5. db.user.find({})
6. db.user.find({}).length()
-
db.user.find({username:‘sunwukong’})
-
db.user.updateMany({username:‘sunwukong’},{$set:{address:‘花果山’}})
- db.user.updateMany({username:‘zhubajie’},{$set:{username:‘tangseng’}}) 同update,只是update默认只更新查到的第一个
- db.user.updateMany({username:‘sunwukong’},{$unset:{address:‘花果山’}})
11. db.user.updateMany({username:‘sunwukong’},{$set:{hobby:{cities:[‘beijing’,‘shanghai’,‘shenzhen’],movies:[‘snaguo’,‘hero’]}}})
-
db.user.updateMany({username:‘tangseng’},{$set:{hobby:{movies:[‘King of comedy’,‘A Chinese Odyssey’]}}})
文档的属性值也可以是一个文档,这样被称作为内嵌文档 -
db.user.find({‘hobby.movies’:‘hero’})
** 如果要通过内嵌文档来对文档进行查询,那么有.符号的属性要加上引号才可被辨别
14.db.user.update({username:‘tangseng’},{$push:{‘hobby.movies’:‘Interstellar’}})
其中$push用来向数组中添加元素,可以重复添加
$addToSet 也是用来向数组中添加元素,区别是不可重复添加
匹配了1个,但修改了0个
- db.user.remove({‘hobby.cities’:‘beijing’})
- 删除user集合
db.user.drop()
- 向numbers集合中插入20000条数据
慢 不推荐
for(var i=1;i<=20000;++i){
db.numbers.insert({num:i})
}
尽量少使用数据库操作,提前打包好
var arr =[]
for(var i=1;i<=20000;++i){ arr.push({num:i}) }
db.numbers.insert(arr)
这样会快