2

我有一个猫鼬模式,其中包含一个具有特定索引的字段:

const reportSchema = new mongoose.Schema({
    coords: {
    type: [Number],
    required: true,
    index: '2dsphere'
    },
…
}

它在我的本地机器上运行良好,所以当我通过 shell 连接到 MongoDB 时,我得到以下输出db.reports.getIndexes()

[
{
    "v" : 2,
    "key" : {
        "_id" : 1
    },
    "name" : "_id_",
    "ns" : "weatherApp.reports"
},
{
    "v" : 2,
    "key" : {
        "coords" : "2dsphere"
    },
    "name" : "coords_2dsphere",
    "ns" : "weatherApp.reports",
    "background" : true,
    "2dsphereIndexVersion" : 3
}
]

然后我将此应用程序部署到 Heroku 并连接到 MongoDB Atlas 而不是我的本地数据库。它适用于保存和检索数据,但没有创建索引(仅默认一个):

[
{
    "v" : 2,
    "key" : {
        "_id" : 1
    },
    "name" : "_id_",
    "ns" : "weatherApp.reports"
}
]

什么可能导致这个问题?Atlas 允许通过 Web GUI 创建索引,它可以很好地工作以及从 shell 中创建索引。但由于某种原因,Mongoose 无法执行此操作。

4

1 回答 1

2

当我使用猫鼬版本时,我遇到了同样的问题v5.0.16。但是,由于我更新到v5.3.6它,现在正在为我在 Mongo Atlas 上创建(复合)索引。(我刚刚编写了一个包含两个版本的示例应用程序来验证情况是否如此)。

我不确定哪个版本解决了这个问题,但它介于v5.0.16和之间v5.3.6,在哪里v5.3.6工作。

于 2018-10-25T11:39:31.487 回答