- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个名为 search2 的集合,其中包含大约 20000 个这样的文档:
{
"loc": {
"type": "Polygon",
"coordinates": [
[
[
43.78526674007639,
11.14739998758569
],
[
43.78526674007639,
11.183372851822439
],
[
43.79443488391605,
11.183372851822439
],
[
43.79443488391605,
11.264311796355125
],
[
43.812771171595415,
11.264311796355125
],
[
43.83110745927479,
11.264311796355125
],
[
43.83110745927479,
11.273305012414314
],
[
43.849443746954144,
11.273305012414314
],
[
43.858611890793824,
11.273305012414314
],
[
43.858611890793824,
11.264311796355125
],
[
43.8769481784732,
11.264311796355125
],
[
43.8769481784732,
11.246325364236752
],
[
43.88611632231286,
11.246325364236752
],
[
43.88611632231286,
11.237332148177565
],
[
43.895284466152546,
11.237332148177565
],
[
43.895284466152546,
11.228338932118376
],
[
43.904452609992234,
11.228338932118376
],
[
43.904452609992234,
11.165386419704065
],
[
43.895284466152546,
11.165386419704065
],
[
43.895284466152546,
11.156393203644878
],
[
43.88611632231286,
11.156393203644878
],
[
43.8769481784732,
11.156393203644878
],
[
43.858611890793824,
11.156393203644878
],
[
43.849443746954144,
11.156393203644878
],
[
43.849443746954144,
11.165386419704065
],
[
43.83110745927479,
11.165386419704065
],
[
43.83110745927479,
11.156393203644878
],
[
43.812771171595415,
11.156393203644878
],
[
43.812771171595415,
11.14739998758569
],
[
43.79443488391605,
11.14739998758569
],
[
43.78526674007639,
11.14739998758569
]
]
]
},
"docId": 1,
"docVote": 0,
"title": "title-1",
"_id": {
"$oid": "5248725d2dd5622510000001"
}
}
我用这个命令定义了一个索引:
db.search2.ensureIndex({"loc":"2dsphere"});
集合中只有这个索引和“_id”字段的默认索引。
当我执行以下查询时,我希望解释中的 indexOnly 参数设置为 true:
db.search2.find({
loc: {
$geoIntersects: {
$geometry: {
type: "Polygon",
coordinates: [
[
[43.7269795, 11.1540365],
[43.7269796, 11.1540365],
[43.7269796, 11.1540366],
[43.7269795, 11.1540366],
[43.7269795, 11.1540365]
]
]
}
}
}
}, {
loc: 1,
_id: 0
}).hint({"loc":"2dsphere"}).explain()
但这是结果:
{
"cursor" : "S2Cursor",
"isMultiKey" : true,
"n" : 14,
"nscannedObjects" : 14,
"nscanned" : 186,
"nscannedObjectsAllPlans" : 14,
"nscannedAllPlans" : 186,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 20,
"indexBounds" : {
},
"nscanned" : 186,
"matchTested" : NumberLong(80),
"geoTested" : NumberLong(80),
"cellsInCover" : NumberLong(1),
"server" : "*******"
}
我注意到 isMultiKey 为真,由文档多边形语法引起。游标是 S2Cursor 所以我想索引被使用了。但是为什么 indexOnly 是假的呢?是由于多边形语法吗?所以不可能有 IndexOnly=true ?提前致谢
最佳答案
indexOnly 解释来自here状态:
indexOnly is a boolean value that returns true when the query is covered by the index indicated in the cursor field. When an index covers a query, MongoDB can both match the query conditions and return the results using only the index because:
all the fields in the query are part of that index, and
all the fields in the query are part of that index, and
来自here它指出:
An index cannot cover a query if:
- any of the indexed fields in any of the documents in the collection includes an array. If an indexed field is an array, the index becomes a multi-key index index and cannot support a covered query.
- any of the indexed fields are fields in subdocuments.
希望对你有帮助
关于MongoDb geoIntersects 不使用 IndexOnly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19093490/
我收到 Firebase 警告“使用未指定的索引。请考虑在/user/544dceb6-98d-4f7e/clients 添加 ".indexOn": "E-mail"。 我添加的规则是: { "
我的数据设置如下: Tasks:{ Group 1:{ pushid1:{ date: 18921949021, title: "Do something"
您在下面看到的当前查询效率不高,因为我没有设置正确的索引。我在 Xcode 的控制台中收到建议 Consider adding ".indexOn": "users/kxSWLGDxpYgNQNFd3
您在下面看到的当前查询效率不高,因为我没有设置正确的索引。我在 Xcode 的控制台中收到建议 Consider adding ".indexOn": "users/kxSWLGDxpYgNQNFd3
我有一个大约有 7 - 8k 用户的数据库,每次我执行 getChildrenCount() 来计算我的应用程序中有多少人时,我真的需要等待很长时间才能处理并到来上。 我想知道是否有一种方法可以在我的
我尝试使用 Firebase (2.2.5) API/.orderByChild('score') 操作,并且我不断得到 No index defined for score 尽管 Firebase
所以我有这样的数据: pushNotifications { -K - RwEgd541PIGNOXXUH: { message: "Xiaoyu Hugh Hou bid a
我有一个从 Firebase 实时数据库检索的 content 节点。我利用 .orderByChild("time") 获取按最早时间戳排序的前 5 个博客对象的数据快照。我 我目前正在尝试使用 .
我对 firebase 的索引有一些疑问。这是我的 Firebase 结构: merchants { merchantID1 : { merchantName :
我正在使用以下查询创建条目 var newMessageRef = friendlyChat.database.ref().child('dinos').push() newMessageRef.se
Firebase 结构: { "config" : [ { "config1" : { "hideimage" : true } },
我在 stackoverflow 上搜索了很多并阅读了很多问题我有 3 个 indexOn 问题,其中 2 个已解决,1 个仍然存在我正在对数据库进行排序,并在成功运行的“Collection 夹”和
我在 swift 中使用 firebase 从 firebase 实时数据库中读取一些数据。当我在 firebase 面板中有一个项目时它工作正常,但今天添加另一个项目后我得到了这样的错误 2017-
我想弄清楚如何从 iOS 应用程序使用 Geofire。但是我在规则定义方面失败了。 这就是我的数据集的样子: offers:{ user1:{ name : "Steph",
我正在尝试使用 firebase 查询获取情绪等于 M1 的所有帖子,如下所示: db.ref(`Recommendations`).orderByChild(`post/vote/moodTags/
我有一个名为 search2 的集合,其中包含大约 20000 个这样的文档: { "loc": { "type": "Polygon", "c
我有一个带有索引的集合: { "UserId" : 1, "ShareId" : 1, "ParentId" : 1, "DeletedDate" : 1 } 如果我进
我在 xcode 中遇到这个错误: 使用未指定的索引。考虑将/groups 处的 ".indexOn": "members/rsenov"添加到您的安全规则中以获得更好的性能 这是我的 JSON 数据
我已经开始测试 Firebase,但我无法弄清楚关于索引的一件事。我正在根据阅读的内容创建一个结构 - Firebase Data Structuring - 类似于用户和组的示例。 JSON 树看起
我有一堆要使用 .indexOn 建立索引的键 假设我的数据如下所示。我希望能够使用 .orderByChild("height") . { "lambeosaurus": { "stat
我是一名优秀的程序员,十分优秀!