我不确定是否有可能,我只是好奇。 我有一个区域集合,目的是加载到Web下拉列表。不是那里的大事。
{ _id:"some numeric id", name:"region name", }
并创建索引,如+ (instancetype)create {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_sharedClient = [[[self class] alloc] init];
});
return _sharedClient;
}
+ (instancetype)sharedClient {
if (!_sharedClient) {
[GotItClient create];
}
return _sharedClient;
}
- (id)init {
self = [super init];
if (self) {
NSURL *baseURL = [NSURL URLWithString:kSCGotItClientAPIURL];
NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@"group.com.gotit.iphone.gotit"];
sessionConfiguration.sharedContainerIdentifier = @"group.com.gotit.iphone.gotit";
_networkManager = [[BDBOAuth1SessionManager alloc]
initWithBaseURL:baseURL
sessionConfiguration:sessionConfiguration
consumerKey:kSCGotItClientKey
consumerSecret:kSCGotItClientSecret
shareDefaultGroupId:@"group.com.gotit.iphone.gotit"];
_networkManager.responseSerializer = [[AFJSONResponseSerializer alloc] init];
//4 operations at same time
[[_networkManager operationQueue] setMaxConcurrentOperationCount:20];
}
return self;
}
我尝试了两个db.regions.createIndex({name:1})
而没有排序。
使用db.regions.find({},{_id:0}).sort(name:1)
显示explain
大于零,这意味着如果我理解了这个概念,它就不是被覆盖的查询。
答案 0 :(得分:1)
对于覆盖查询,您必须明确列出投影中的每个覆盖字段:
db.regions.find({}, {_id:0, name: 1}).sort(name:1)
如果您只排除_id
,那么您告诉MongoDB除了_id
之外还要包含所有字段。你知道你的所有文档都只有一个name
字段,但是MongoDB没有,所以你必须明确。