mongo:返回不等于count()

时间:2016-09-26 09:13:30

标签: django mongodb

我遇到了一个长期困扰我的问题,接下来是代码演示(例如代码演示):

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.FragmentActivity;  // <- specified as unused ERROR
import android.support.v4.app.FragmentManager;   // <- specified as unused ERROR
import android.support.v4.view.ViewPager;        // <- specified as unused ERROR
import android.util.Log;

public class Main extends FragmentActivity {
...
}

但是,from mongoengine import* Class Scan(Documnet): name=StringField() ..... queryset=Scan.objects.filter(name="Bob") number1=queryset.count() number2=len(queryset) number1=1782number2=1668

任何人都可以告诉我原因吗?

1 个答案:

答案 0 :(得分:1)

这是由于documentation.

中提到的以下原因之一
  

在分片群集中,如果orphaned documents存在或chunk migration正在进行中,则db.collection.count()可能会导致计数不准确。

     

要避免这些情况,请在分片群集上使用db.collection.aggregate()方法的$ group阶段对文档进行求和。例如,以下操作计算集合中的文档:

您可以按照文档中的建议使用aggregate方法执行此操作。

Scan.aggregate(
    {'$group': {
        '_id': None, 
        'count': {'$sum': 1}
    }}
)