我在MongoDB数据库中有一组文档,我使用如下命令创建了一个简单的索引:
db.fubar.createIndex({category: 1},{background: true});
索引编制完成后,我对fubar
具有category
特定值的文档的查询比以前更快完成,如预期的那样。所以,一切似乎都很好。
但是,我想知道这个新索引引用fubar
中有多少文档。并非集合中的每个文档都具有category
属性,因此我猜这些文档不包含在索引中。
如何准确找出集合索引引用的文档数量?
我还想过知道索引引用了多少文档可能表明集合上创建索引的进度。也就是说,如果我知道一个集合包含 n 文档,并且正在为集合创建索引 m 然后,索引创建 m / n 完成。这对于大型集合很有帮助,例如 n 数百万或数十亿的集合。
答案 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()