Mongodb find-> insert和count具有不同的结果

时间:2016-02-03 15:18:03

标签: mongodb

我试图通过查询并将结果存储在较小的集合中来过滤数据集合。但是,使用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({})

修改

  • 以前我在robomongo gui运行这个,它给人的印象是一切都很顺利。现在我在mongo shell中尝试了这个,我得到了这个
  

2016-02-04T00:39:21.735 + 0800错误:getMore:游标在服务器上不存在,可能重启或超时?在src / mongo / shell / query.js:116

1 个答案:

答案 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)
})