mongodb和Express

施令秋
2023-12-01

mongodb常用语句:
ction(“collName”, {size: 20, capped: true, max: 100}); (写限制的为定容量,一般不写 )

db.collName.isCapped(); //判断集合是否为定容量
db.createCollection(‘info’) 创建info集合
db.getCollection(‘info’) 查询
db.getCollectionNames() 获取当前db所有集合
db.printCollectionStats() 查询所有集合状态
db.collectionname.drop() 删除集合
db.users.save({name: ‘zhangsan’}); 添加集合
$set 对数据重新设置
KaTeX parse error: Expected '}', got 'EOF' at end of input: …updateMany({},{set:{artist:‘哈哈’}}) 所有数据添加一个artist
db.users.update({age:25},{$set:{name:‘zhang’}},false,true) 修改数据
1/修改的数据不存在—第一个参数false(不添加)true(添加)

2/数据有重复的---第二个参数true符合条件的数据均修改,false默认修改第一条数据

db.users.update({name: ‘Lisi’}, {$inc: {age: 50}, $set: {name: ‘hoho’}}, false, true);
db.users.remove({age:123},true ); 删除 (true为删除全部,false删除一个)

db.userlnfo.distinct(‘name’); 查询去重后的数据
db.userlnfo.find({‘age’:22}); 查询age=22的记录
db.userlnfo.find({age:{KaTeX parse error: Expected 'EOF', got '}' at position 6: gt:22}̲}); age>22 db…lt:22}}); age<22
db.userlnfo.find({age:{KaTeX parse error: Expected 'EOF', got '}' at position 7: gte:22}̲}); age>=22 d…lte:22}}); age<=22
db.userlnfo.find({age:{ g t e : 22 , gte:22, gte:22,;lte:26}}); 22=<age<=26
db.userlnfo.find({name:/zhang/}); 查询name中包含zhang的数据
db.userlnfo.find({name./^zhang/}); 查询name中以zhang为开头的
db.userInfo.find({},{name: 1, age: 1}); 查询指定列name、age数据
db.userInfo.find({age: {$gt: 25}}, {name: 1, age: 1});
查询指定列name、age数据, age > 25

升序:db.userInfo.find().sort({age: 1});
降序:db.userInfo.find().sort({age: -1}); 按照年龄排序

db.userInfo.find({name: ‘zhangsan’, age: 22}); 查询name = zhangsan, age = 22的数据
db.userInfo.find().limit(5); 查询前5条数据
db.userInfo.find().skip(10); 查询10条以后的数据
db.userInfo.find().limit(10).skip(5); 限制数据量/几条数据后 第五条以后的10条数据
db.userInfo.find({KaTeX parse error: Expected 'EOF', got '}' at position 27: …22}, {age: 25}]}̲); or与 查询 db.us…gte: 25}}).count(); 查询某个结果集的记录条数
db.userInfo.find({sex: {$exists: true}}).count(); 查询某一项的记录数目


Express
name: 设置 cookie 中,保存 session 的字段名称,默认为 connect.sid 。
store: session 的存储方式,默认存放在内存中,也可以使用 redis,mongodb 等。express 生态中都有相应模块的支持。
secret: 通过设置的 secret 字符串,来计算 hash 值并放在 cookie 中,使产生的 signedCookie 防篡改。
cookie: 设置存放 session id 的 cookie 的相关选项,默认为 (default: { path: ‘/’, httpOnly: true, secure: false, maxAge: null })
genid: 产生一个新的 session_id 时,所使用的函数, 默认使用 uid2 这个 npm 包。
rolling: 每个请求都重新设置一个 cookie,默认为 false。
resave: 即使 session 没有被修改,也保存 session 值,默认为 true。
saveUninitialized: 是指无论有没有session cookie,每次请求都设置个session cookie ,默认给个标示为 connect.sid

cookie和session区别:
cookie数据存放在客户的浏览器上,session数据放在服务器上。
cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗 考虑到安全应当使用session。
session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能 考虑到减轻服务器性能方面,应当使用COOKIE。
单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

创建:
app.use(session({
secret: ‘recommend 128 bytes random string’,
cookie: { maxAge: 20 * 60 * 1000 },
resave: true,
saveUnintialized: true
}))
销毁:
req.session.username = undefined;
req.session.destroy(function(err){
if(err){
console.log(err)
}else{
res.redirect("/")
}
})

 类似资料: