使用url参数查询数据的时候，要对参数进行处理，如下：// 查询单条数据router.get('/:id', async (req, res) => {const posts = loadPostsCollection();res.send(await (await posts).findOne(new mongodb.ObjectID(req.params.id)))})如果url里的参数，使用req.params.id；如果是params里传过来的参数，要使用req.query.id
原文链接，复制只为方便查询。查询所有记录：db.user.find() 相当于：select * from user; 查询 age = 20 的记录：db.user.find({age:20}) 相当于：select * from user where age = 20; 查询 age > 20 的记录：db.user.find({age:{$gt:20}}) 相当于：select * from user where age > 20; 查询 age < 20 的记录：db.user.find({age:{$lt:20}}) 相当于：select * from user where age < 20; 查询 age >= 20 的记录：db.user.find({age:{$gte:20}}) 相当于：select * from user where age >= 20; 查询 age <= 20 的记录：db.user.find({age:{$lte:20}}) 相当于：select * from user where age <= 20; 查询 age >= 20 并且 age <= 30 的记录：db.user.find({age:{$gte:20,$lte:30}}) 查询 name 中包含 '张' 的数据： （模糊查询）：db.user.find({name:/张/}) 相当于：select * from user where name like ‘%mongo%’; 查询 name 中 以 '张' 开头的数据：db.user.find({name:/^张/}) 相当于：select * from user where name like ‘mongo%’; 查询 name 中 以 '张'结尾的数据：db.user.find({name:/张$/}) 相当于：select * from user where name like ‘%mongo’; 查询指定列数据：db.user.find({},{name:1}) // 查询 name 列数据 第一个字段为查询条件 相当于：select name from user; 注：name 也可用 true 或 false 来表示，为 true 时，与 name：1 效果一样，false 则表示排除 name ，显示 name 以外的列信息 查询指定列，name，age数据，且 age > 20db.user.find({age:{$gt:20}},{name:true,age:true}) 相当于：select name,age from user where age > 20; 升序、降序排列：升序： db.user.find().sort({age:1}) // 以 age 为标准 降序： db.user.find().sort({age:-1}) 查询前5条数据：db.user.find().limit(5) 相当于：selecttop 5 * from user; 查询后10条数据：db.user.find().skip(10) 相当于：selecttop * from user where id not in(selecttop 10 * from user); 查询 5-10之间的数据：db.user.find().limit(10).skip(5) // 10 之前，5之后，即 5-10 之间 // 可用于分页，limit 是 pageSize，skip 是第几页 * pageSize 查询 age = 28，或者 age = 29 的数据：db.user.find({$or:[{age:28},{age:29}]}) 相当于：select * from user where age = 28 or age = 29; 查询第一条数据：db.user.findOne() 统计查询到的数据的数量：db.user.find().count() 统计 age > 20 的数据的数量：db.user.find({age:{$gt:20}}).count() 如果，想以比较易读的方式查找数据，可以在最后面添加 pretty()