一个奇怪的问题: 我打印dbcursor.count(),它使用db.collectionName.count()生成与我从mongo shell获得的数字相同的数字。
然而, 我喜欢的时候,
DBCursor cursor = myCollection.find(someQuery);
int count = cursor.count();
int cnt = 0;
while (cursor.hasNext()) {
cnt++;
DBObject dbObject = (DBObject) cursor.next();
}
之后,count和cnt会产生冲突结果: 前者是我所期望的, 而后者远远少于前者。
然后我检查了mongodb DBCursor API文档。 http://api.mongodb.org/java/2.0/com/mongodb/DBCursor.html
来自count()和hasNext()的措辞
public int count()
throws MongoException
Counts the number of elements in this cursor.
Returns:
the number of elements
和
public boolean hasNext()
Checks if there is another element.
Returns:
if there is another element
这意味着count和cnt应该相同。 只是为了记录,在这个过程中mongodb 没有插入或删除操作。(我测试过 用于测试的镜像数据库)
有什么想法吗?
答案 0 :(得分:0)
正如@assylias的评论,可能是由于索引损坏。