gpt4 book ai didi

mongodb - 错误 16755 - Mongo 无法提取地理键

转载 作者:IT老高 更新时间:2023-10-28 13:23:32 25 4
gpt4 key购买 nike

我是 mongo 和 node.js 的初学者,在现有项目中,我们有一个带有 geolocs 的商店的集合。我收到以下错误(我删除了一些字段)

"code" : 16755,
"errmsg" : "Can't extract geo keys: { _id: ObjectId('566990eea9c7a38740a305a3'),
id: 50, guid: \"NL7a09b334-7524-102d-a4ef-00163e5faa0c\", version: 0, owner: 118,
published: 1, loc: [ -9999, -9999 ], logo: \"69db95d0-d58d-40cf-80d3-ac80b8c86af8.png\" }
can't project geometry into spherical CRS: [ -9999, -9999 ]"

当我尝试在商店中 $set 一些值时。我看到值 -9999、-9999 不正确,但是当我尝试用(在 Robomongo 中)其他值替换它时,我得到了同样的错误。如何修复此错误,以便我可以编辑 loc 中的值并执行 $set

最佳答案

您说得对,错误是因为您在该文档中的地理坐标无效(请参阅 2dsphere indexes)。

假设这是您拥有的文档:

> db.test.find()

{
"_id": ObjectId("566990eea9c7a38740a305a3"),
"id": 50,
"guid": "NL7a09b334-7524-102d-a4ef-00163e5faa0c",
"version": 0,
"owner": 118,
"published": 1,
"loc": [
-9999,
-9999
],
"logo": "69db95d0-d58d-40cf-80d3-ac80b8c86af8.png"
}

最简单的方法是使用 mongo shellperform an update ,通过使用 ObjectId 并执行 $set on the loc field .例如,通过将 loc 字段设置为有效坐标(例如 [-73.97, 40.77]):

> db.test.update({"_id": ObjectId("566990eea9c7a38740a305a3")}, {$set:{loc:[-73.97, 40.77]}})

Updated 1 existing record(s) in 1ms
WriteResult({
"nMatched": 1,
"nUpserted": 0,
"nModified": 1
})

请注意,在上面的示例中,我使用了 _id 字段,该字段保证是唯一的,因此更新命令只会更新该确切的文档。之后,您的 2dsphere 索引创建应该会成功:

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

{
"createdCollectionAutomatically": false,
"numIndexesBefore": 1,
"numIndexesAfter": 2,
"ok": 1
}

关于mongodb - 错误 16755 - Mongo 无法提取地理键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40935907/

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