gpt4 book ai didi

javascript - 异常 : geoNear command failed: errmsg: more than one 2d index

转载 作者:行者123 更新时间:2023-11-30 19:36:47 25 4
gpt4 key购买 nike

我正在尝试按距离从集合中检索文档。我尝试使用 $geoNear 聚合,但我遇到错误(使用 node.js 和 postman )或返回 0 条记录。

示例文档:

{
"_id" : ObjectId("5cc37692fe9fd54b3cd136c9"),
"category" : "art",
"description" : "an eastbound description for The soda event.",
"geometry" : {
"type" : "Point",
"coordinates" : [
3.60178480057443,
6.46123057784917
]
}
"__v" : 0
}
.
.

型号:

const GeoSchema = new Schema({
type: {
type: String,
default: "Point"
},
coordinates: {
type: [Number],
index: "2dsphere"
}
}, { _id: false });

const EventSchema = new Schema({
category: String,
description: String,
geometry: GeoSchema,
});

查询

db.events.aggregate([
{
$geoNear: {
near: { type: "Point", coordinates: [3.60178480057443, 6.46123057784917] },
distanceField: "dist",
maxDistance: 90000,
spherical: true
}
}
]);

运行上面的查询返回零个结果,一个空数组(在 postman 上),有时会显示此错误:

{
"name": "MongoError",
"errmsg": "exception: geoNear command failed: { ok: 0.0, errmsg: \"more than one 2d index, not sure which to run geoNear on\" }",
"code": 16604,
"ok": 0
}

当显示此错误时,我运行 db.events.dropIndex 函数。我复制并粘贴了文档中使用的示例,效果很好。请问我如何使这个 $geoNear 函数工作。我已经为此苦苦挣扎了一整天。

最佳答案

单个集合不能有超过一个 2dsphere 索引,并且您已经通过运行以下命令在多个字段上创建了 2dsphere 索引。

db.getCollection('test').createIndex({ "loc": "2dsphere" }) 

所以删除索引之一,它就会工作。您可以使用此检查索引列表

db.getCollection('test').getIndexes()

更新:

您可以使用 key如果您的收藏有多个 $geoNear,则指定要在哪个字段上进行搜索的参数指标

关于javascript - 异常 : geoNear command failed: errmsg: more than one 2d index,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55875376/

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