Node.js 当使用Mongoose从MongoDB获取数据时,基于正则表达式/字符串匹配排除获取密钥
我们有一张相当大的桌子需要取。我们已经创建了一个复合索引,它要求fetch只扫描所需的数据,但是这仍然返回约5K个集合,每个集合有约120个键。我们希望加快这一速度,使其超越复合_指数为我们所做的。使用Node.js 当使用Mongoose从MongoDB获取数据时,基于正则表达式/字符串匹配排除获取密钥,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我们有一张相当大的桌子需要取。我们已经创建了一个复合索引,它要求fetch只扫描所需的数据,但是这仍然返回约5K个集合,每个集合有约120个键。我们希望加快这一速度,使其超越复合_指数为我们所做的。使用mongoose,我们的应用程序中有以下代码: let router = express.Router(); router.get('/big-table/name/:name/school/:school', function (req, res) { let name = Number
mongoose
,我们的应用程序中有以下代码:
let router = express.Router();
router.get('/big-table/name/:name/school/:school', function (req, res) {
let name = Number(req.params.name);
let school = Number(req.params.school);
db.our_big_table.find({ name: { $eq: name }, school: { $eq: school })
.then(data => res.json(data))
.catch(err => res.status(400).json('Error: ' + err))
});
我们不需要120个键中的60个,所有60个键都以后缀TTOP
结尾。例如,这60把钥匙中有3把可能是ageTTOP
,heighttop
,sizeTTOP
。。。我们可以列出要排除的每一列,如下所示:
let router = express.Router();
router.get('/big-table/name/:name/school/:school', function (req, res) {
let name = Number(req.params.name);
let school = Number(req.params.school);
db.our_big_table.find({ name: { $eq: name }, school: { $eq: school }, '-ageTTOP -heightTTOP -sizeTTOP ...')
.then(data => res.json(data))
.catch(err => res.status(400).json('Error: ' + err))
});
但是,如果我们可以将.find()
函数中的第二个参数替换为以下内容,那就太好了:
db.our_big_table.find({ name: { $eq: name }, school: { $eq: school }, 'doesnt end in TTOP')
MongoDB/Mongoose可以这样做吗?我认为这不受支持,您需要重新组织架构。好的,很高兴知道,谢谢。我认为这不受支持,您需要重新组织架构。好的,很高兴知道,谢谢