带有mongoDB索引问题的PM2 / NodeJS API

时间:2018-06-29 11:12:59

标签: node.js mongodb mongoose pm2 mongodb-indexes

我正在尝试使用NodeJS在同一Ubuntu VPS中部署多个PM2 rest API ,这些API用于提供来自不同MongoDB的数据同一本地托管数据库服务器中的数据库。

我确实遇到了一些端口问题,但是我确实在每个应用程序中都进行了更改以解决该问题。之后,出现奇怪的mongoDB错误。

API listen on port 3001
Connected!
MongoError: Index with pattern: { _fts: "text", _ftsx: 1 } already exists with different options
    at /var/app/my-project/node_modules/mongodb-core/lib/connection/pool.js:593:63
    at authenticateStragglers (/var/app/my-project/node_modules/mongodb-core/lib/connection/pool.js:516:16)
    at Connection.messageHandler (/var/app/my-project/node_modules/mongodb-core/lib/connection/pool.js:552:5)
    at emitMessageHandler (/var/app/my-project/node_modules/mongodb-core/lib/connection/connection.js:309:10)
    at Socket.<anonymous> (/var/app/my-project/node_modules/mongodb-core/lib/connection/connection.js:452:17)
    at emitOne (events.js:116:13)
    at Socket.emit (events.js:211:7)
    at addChunk (_stream_readable.js:263:12)
    at readableAddChunk (_stream_readable.js:250:11)
    at Socket.Readable.push (_stream_readable.js:208:10)
    at TCP.onread (net.js:597:20)

现在,API会继续重新启动并降低整个系统的速度。请有人指导我扔了这个,请注意,我只是在维护应用程序。我不是开发人员,并且对mongo数据库不太熟悉。

谢谢

1 个答案:

答案 0 :(得分:2)

检查您定义了文本索引的字段。现在,mongodb每个集合只允许一个文本索引

db.collection.getIndexes()

您会得到类似的东西

 {
        "v" : 1,
        "key" : {
            "_fts" : "text",
            "_ftsx" : 1
        },
        "name" : "desc_text",
        "ns" : "some.ns",
        "weights" : {
            "title" : 1
        },
        "default_language" : "english",
        "language_override" : "language",
        "textIndexVersion" : 2
    }

现在,如果您还想在其他列中使用该索引,只需删除该索引

db.collection.dropIndex('desc_text');

,然后通过包含要包含在文本索引中的所有列来重新创建它,

db.collection.createIndex({
    title:'text'
      ...
});
相关问题