node.js - 在环回3中基于特定过滤器计算大数据
问题描述
我有一个模型 A,它有 3 个字段 {“name”:Name,“creationDate”:Date,“completionDate”:Date},我想获取完成日期小于今天的所有数据的计数。
我曾尝试使用 Model.find(query) 进行过滤,但需要花费大量时间 loopback3 中有什么有效的方法吗?
解决方案
您是否使用了计数查询?喜欢:
YourModel.count({ 'completionDate' {'lt': yourDate} }, function (err, count) {
if (!err)
console.log(count);
});
如果查询仍然太长,请尝试在 中添加索引/common/models/yourModel.json
,例如:
{
"name": "YourModel",
"base": "PersistedModel",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"completionDate": {
"type": "Date",
"index": true
}
...
}
并且不要忘记在 中添加一个自动更新启动脚本文件/server/boot/autoupdate.js
,其中包含:
'use strict';
var Promise = require('bluebird');
module.exports = function (server) {
Promise.each(server.models(), function (model) {
if (model.dataSource) {
var autoupdate = Promise.promisify(model.dataSource.autoupdate);
if (autoupdate) {
return autoupdate.call(model.dataSource, model.modelName);
}
}
});
};
确保您的索引在您的数据库中更新!
推荐阅读
- ios - 从 ViewController 追加流?
- c - 为什么使用 -O(1/2/3) 选项进行优化会干扰 scanf()?
- javascript - 如何在 javascript 中到达嵌套对象内部?
- bash - 在特定符号之间过滤具有匹配 ID 字符串的多 fasta 文件
- algorithm - 确定是否可以将一组节点视为有向无环图的孤立子图
- c# - VSTO Excel 插件仅适用于一个用户帐户(开发它的用户)
- wordpress - 如何为仅端口 8080 正确配置 Traefik Dashboard?
- r - dplyr 的 rowwise + replace_NAs:用其他列的值替换多列中的 NA
- python - 初学者 Python 和 API - 如何读取数据?
- java - Minecraft Block Harvest 等级限制