gpt4 book ai didi

node.js - 蒙戈 : "2d" index and normal index

转载 作者:太空宇宙 更新时间:2023-11-04 01:14:48 24 4
gpt4 key购买 nike

location: {lat: Number,
lng: Number}

location 是我的 mongodb 中的二维索引,我一直使用它进行地理空间搜索,效果很好。

现在,如果我需要搜索 db.find({lat:12.121212, lng:70.707070}),它会使用相同的索引吗?或者,我需要定义一个新索引吗?如果是这样,怎么办?

我在 node.js 中使用 mongoose 驱动程序

最佳答案

用于执行地理空间命令的二维索引不会有助于两个字段的等效匹配。为此,您需要在两个子文档上定义复合索引,如下所示:

db.collection.ensureIndex({"location.lat" : 1, "location.lng" : 1})

这对我来说最适合测试数据集 - 您还可以在位置字段本身上定义一个普通索引,但这会降低效率。您可以使用任何索引组合的提示和解释来测试相对性能。例如:

db.collection.find({"location.lat" : 179.45, "location.lng" : 90.23}).hint("location.lat_1_location.lng_1").explain()

实际上,您可以对任何您希望的索引执行此操作,但要检查返回的结果,您需要删除 .explain()

另请记住,一个查询一次只能使用一个索引,因此,如果您希望将两者结合起来(等价搜索和地理空间搜索),那么二维索引将是唯一使用的索引。

注意:以上所有示例均来自 MongoDB JS shell,而不是 Node.js

关于node.js - 蒙戈 : "2d" index and normal index,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11598606/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com