我将一组网页存储在mongodb中,大约150M网页。每页不同大小。唯一的事务我想用它来检索页面使用他们的id(而不是mongodb默认_id)。但是,获取结果需要很长时间,而我还没有设法检索任何文档。但是,使用db.collection.findOne()
可以完美运行。因此,我将5M网页的子集编入索引以进行测试和修复。对此db db.collection.find("id":"aw-000")
发出查询时,获取文档需要4分钟或更长时间。
我尝试了db.runCommand({compact: 'collection'})
和db.runCommand({compact: 'collection'})
m但他们没有帮助!
当我检查var/log/mongodb/mongod.log
下的日志(应该包含任何查询时间超过100毫秒)时,我发现了这个:
655163:2017-07-16T14:05:37.231+0300 I COMMAND [ftdc] serverStatus was very slow: { after basic: 0, after asserts: 0, after connections: 0, after extra_info: 310, after globalLock: 310, after locks: 310, after network: 310, after opcounters: 310, after opcountersRepl: 310, after storageEngine: 310, after tcmalloc: 310, after wiredTiger: 310, at end: 1220 }
但是,我不知道如何从这些日志中受益。
有没有办法让我的数据库更有效率?
答案 0 :(得分:0)
正如Neil Lunn在上述评论中指出的那样。我发现最简单的解决方案是从头开始创建数据库,同时使用$("#dt1").datepicker({
dateFormat: "dd-M-yy",
minDate: 0,
onSelect: function (date) {
var date2 = $('#dt1').datepicker('getDate');
date2.setDate(date2.getDate() + 1);
$('#dt2').datepicker('setDate', date2);
//sets minDate to dt1 date + 1
$('#dt2').datepicker('option', 'minDate', date2);
}
});
$('#dt2').datepicker({
dateFormat: "dd-M-yy",
onClose: function () {
var dt1 = $('#dt1').datepicker('getDate');
console.log(dt1);
var dt2 = $('#dt2').datepicker('getDate');
if (dt2 <= dt1) {
var minDate = $('#dt2').datepicker('option', 'minDate');
$('#dt2').datepicker('setDate', minDate);
}
}
});
作为我的id字段名而不是_id
。 "id"
默认情况下有一个索引,并且针对此索引发出的唯一查询类型是通过id检索。
因此,程序(用于创建索引的任何程序)将按如下方式插入对象:
_id
而不是:
db.collection.insert( { _id: "aw-000", page: "...", .... } )