我试图通过查询并将结果存储在较小的集合中来过滤数据集合。但是,使用count()找到的记录数和集合中的数字非常不同(count()要高得多)。我做错了吗?
这将返回约1.1亿。
db.getCollection('ex').count({
'data.points': {$exists: true},
'data.points.points': {$exists: false},
}, {
'data.id': 1,
'data.author.id': 1
})
然后我执行此操作。
db.getCollection('ex').find({
'data.points': {$exists: true},
'data.points.points': {$exists: false},
}, {
'data.id': 1,
'data.author.id': 1
})
.forEach(function (doc) {
db.s_uid_wid.insert(doc)
})
但这仅提供约500万条记录。它们应该完全一样。发生了什么事?
db.getCollection('s_uid_wid').count({})
2016-02-04T00:39:21.735 + 0800错误:getMore:游标在服务器上不存在,可能重启或超时?在src / mongo / shell / query.js:116
答案 0 :(得分:1)
以下解决了这个问题。完成插入大约需要一天时间。
db.getCollection('ex').find({
'data.points': {$exists: true},
'data.points.points': {$exists: false},
}, {
'data.id': 1,
'data.author.id': 1
}).addOption(DBQuery.Option.noTimeout)
.forEach(function (doc) {
db.s_uid_wid.insert(doc)
})