1、查詢所有數(shù)據(jù)--find()
所有的查詢都是 一個模型.find()之后開始查
app.get('/product',async function(req,res){
// 每一次的數(shù)據(jù)庫查詢都是從node.js服務(wù)器里面去異步操作連接mongodb數(shù)據(jù)庫散劫,所以要加await
// 只要使用await韧涨,外出的函數(shù)就需要添加async牍戚,因?yàn)閍wait和async是成對使用的
res.send(await Product.find())//查詢product中的所有數(shù)據(jù)
});
查詢結(jié)果:image.png
2、限制查詢的條數(shù)--limit()
語法:模型.find().limit()
app.get('/product',async function(req,res){
// 每一次的數(shù)據(jù)庫查詢都是從node.js服務(wù)器里面去異步操作連接mongodb數(shù)據(jù)庫虑粥,所以要加await
// 只要使用await如孝,外出的函數(shù)就需要添加async,因?yàn)閍wait和async是成對使用的
// 目前我們有三條數(shù)據(jù)舀奶,通過limit可以限制查詢條數(shù)
res.send(await Product.find().limit(2))
});
查詢結(jié)果:image.png
3暑竟、跳過某一條數(shù)據(jù)查詢--skip()
語法:模型.find().skip()
skip()和limit()一起使用一般是用于做分頁的
app.get('/product',async function(req,res){
// 每一次的數(shù)據(jù)庫查詢都是從node.js服務(wù)器里面去異步操作連接mongodb數(shù)據(jù)庫,所以要加await
// 只要使用await育勺,外出的函數(shù)就需要添加async但荤,因?yàn)閍wait和async是成對使用的
// 通過skip可以跳過某一條顯示
res.send(await Product.find().skip(1))//查詢product的數(shù)據(jù),跳過第一條數(shù)據(jù)
});
查詢結(jié)果:image.png
4涧至、條件查詢--where
語法:模型.find().where({條件})
app.get('/product',async function(req,res){
const data = await Product.find().where({
title:'產(chǎn)品2'
})
res.send(data)
});
結(jié)果:image.png
5腹躁、排序--sort
5.1、升序排序(1)
語法:模型.find().sort({xx:1})
app.get('/product',async function(req,res){
// 1為升序排序 -1為降序排序 _id是16進(jìn)制的南蓬,所以可以比較大小
//根據(jù)id升序排序
const data = await Product.find().sort({_id:1})
res.send(data)
});
升序結(jié)果:image.png
5.2纺非、降序排序(-1)
語法:模型.find().sort({xx:-1})
app.get('/product',async function(req,res){
// 1為升序排序 -1為降序排序 _id是16進(jìn)制的哑了,所以可以比較大小
//根據(jù)id降序排序
const data = await Product.find().sort({_id:-1})
res.send(data)
});
降序結(jié)果:image.png
6、根據(jù)id查詢對應(yīng)的產(chǎn)品詳情
//商品詳情
app.get('/product/:id',async function(req,res){
// 通過req.params.id獲取到瀏覽器傳遞的id
const data = await Product.findById(req.params.id);//根據(jù)id查詢對應(yīng)的商品詳情
res.send(data);
})
image.png
image.png