索引引用了多少个文档?

时间:2017-06-19 22:42:10

标签: mongodb indexing

我在MongoDB数据库中有一组文档,我使用如下命令创建了一个简单的索引:

db.fubar.createIndex({category: 1},{background: true});

索引编制完成后,我对fubar具有category特定值的文档的查询比以前更快完成,如预期的那样。所以,一切似乎都很好。

但是,我想知道这个新索引引用fubar中有多少文档。并非集合中的每个文档都具有category属性,因此我猜这些文档不包含在索引中。

如何准确找出集合索引引用的文档数量?

我还想过知道索引引用了多少文档可能表明集合上创建索引的进度。也就是说,如果我知道一个集合包含 n 文档,并且正在为集合创建索引 m 然后,索引创建 m / n 完成。这对于大型集合很有帮助,例如 n 数百万或数十亿的集合。

1 个答案:

答案 0 :(得分:0)

<强>更新

您可以使用postponeEnterTransition(); final ImageView imageView = (ImageView) findViewById(R.id.image_view); final ViewGroup.LayoutParams imageViewLayoutParams = imageView.getLayoutParams(); final ViewTreeObserver viewTreeObserver = imageView.getViewTreeObserver(); viewTreeObserver.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { @Override public boolean onPreDraw() { imageView.getViewTreeObserver().removeOnPreDrawListener(this); // You can acquire the width here logoLayoutParams.width = imageView.getWidth(); Log.i(TAG, "width is " + imageViewLayoutParams.width); imageView.setLayoutParams(imageViewLayoutParams); // `imageView` has been laid out, but not yet been drawn startPostponedEnterTransition(); return true; } }); 编写一个返回所有文档的查询,以指定索引并对其执行fitStart

这应该返回索引运行的确切文档数量。

package main import ( "bytes" "fmt" "encoding/binary" ) func main() { p := fmt.Println b := []byte{43, 1, 0} myStruct := MyStruct{} err := binary.Read(bytes.NewBuffer(b[:]), binary.BigEndian, &myStruct) if err != nil { panic(err) } p(myStruct) } type MyStruct struct { Num uint8 Num2 uint16 }

https://docs.mongodb.com/manual/reference/operator/meta/hint/

旧回答:

您可以编写一个查询,返回该密钥所在的所有文档,并在其上执行.hint()

参考:https://docs.mongodb.com/manual/reference/method/db.collection.count/#index-use

  

执行计数时,MongoDB只能使用   index if:

     

查询可以使用索引,查询只包含条件   索引的键,以及查询谓词访问单个连续的   索引键范围。

你应该能够沿着这些方向运行:

.count()